En lisant cette explication sur les valeurs lvalues et rvalues, ces lignes de code me sont apparues:
int& foo();
foo() = 42; // OK, foo() is an lvalue
Je l'ai essayé dans g ++, mais le compilateur dit "référence indéfinie à foo ()". Si j'ajoute
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Il compile bien, mais son exécution donne une erreur de segmentation . Juste la ligne
int& foo();
par lui-même à la fois compile et s'exécute sans aucun problème.
que veut dire ce code? Comment attribuer une valeur à un appel de fonction et pourquoi n'est-ce pas une rvalue?