¿Qué significa "int & foo ()" en C ++?

Mientras leía esta explicación sobre lvalues ​​y rvalues, estas líneas de código me llamaron la atención: int& foo(); foo() = 42; // OK, foo() is an lvalue Lo intenté en g ++, pero el compilador dice "referencia indefinida a foo ()". Si agrego int foo() { return 2; } int main() { int&...