Lors de la lecture de cette explication sur lvalues et rvalues, ces lignes de code collé à moi:
int& foo();
foo() = 42; // OK, foo() is an lvalue
Je l'ai essayé dans g++, mais le compilateur dit "undefined reference to foo()". Si j'ajoute
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Il compile bien, mais l'exécution, il donne une erreur de segmentation. Juste la ligne
int& foo();
par lui-même à la fois compile et s'exécute sans problème.
Que fait ce code signifie? Comment pouvez-vous attribuer une valeur à un appel de fonction, et pourquoi n'est-il pas une rvalue?