¿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?

Respuestas a la pregunta(9)

Su respuesta a la pregunta