Podczas czytania tego wyjaśnienia na temat lvalues i rvalues, wyskoczyły mi następujące wiersze kodu:
int& foo();
foo() = 42; // OK, foo() is an lvalue
Wypróbowałem to w g ++, ale kompilator mówi „niezdefiniowane odwołanie do foo ()”. Jeśli dodam
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Kompiluje się dobrze, ale uruchomienie go powoduje błąd segmentacji . Tylko linia
int& foo();
sama się kompiluje i działa bez żadnych problemów.
Co oznacza ten kod? Jak przypisać wartość do wywołania funkcji i dlaczego nie jest to wartość r?