Pendant longtemps j'ai pensé que l'opérateur ternaire retournait toujours une rvalue. Mais à ma grande surprise, ce n'est pas le cas. Dans le code suivant, je ne vois pas la différence entre la valeur de retour de foo
et la valeur de retour de l'opérateur ternaire.
#include <iostream>
int g = 20 ;
int foo()
{
return g ;
}
int main()
{
int i= 2,j =10 ;
foo()=10 ; // not Ok
((i < 3) ? i : j) = 7; //Ok
std::cout << i <<","<<j << "," <<g << std::endl ;
}