Assez curieusement, modifier un std::string à "droite" est permis mais pas un int.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 std::string make_string() { return "abc"; } int make_int() { return 5; } int main() { make_string() = "xyz"; make_int() = 8; // error C2106: '=': left operand must be l-value return 0; }
Il y a certainement une bonne raison dans l'apparente incohérence dans ce traitement permissif dans le cas du std::string (et de toute autre classe d'ailleurs) mais pas des types primitifs.
Et je me demande bien laquelle.
(c'est vraiment pas important, c'est juste que je trouve ça curieux)
Partager