Modification de valeur à droite
Code:
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;
} |
Assez curieusement, modifier un std::string à "droite" est permis mais pas un int.
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 ;))