Durante la lettura di questa spiegazione su lvalues e rvalues, queste righe di codice mi sono rimaste impresse:
int& foo();
foo() = 42; // OK, foo() is an lvalue
L'ho provato in g ++, ma il compilatore dice "undefined reference to foo ()". Se aggiungo
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Si compila bene, ma eseguirlo dà un errore di segmentazione . Solo la linea
int& foo();
da solo si compila e funziona senza problemi.
Cosa significa questo codice? Come puoi assegnare un valore a una chiamata di funzione e perché non è un valore?