¿Qué significa "int & foo ()" en C ++?
Mientras leoesta explicacion en lvalues y rvalues, estas líneas de código me llamaron la atención:
int& foo();
foo() = 42; // OK, foo() is an lvalue
Lo probé en g ++, pero el compilador dice "referencia indefinida a foo ()". Si agrego
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Se compila bien, pero ejecutarlo da unFallo de segmentación. Solo la linea
int& foo();
por sí mismo compila y ejecuta sin ningún problema.
¿Qué significa este código? ¿Cómo puede asignar un valor a una llamada de función y por qué no es un valor r?