Читаючи це пояснення про значення і rvalues, ці рядки коду залишилися мені:
int& foo();
foo() = 42; // OK, foo() is an lvalue
Я спробував це в g ++, але компілятор каже "невизначене посилання на foo ()". Якщо я додам
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Він чудово компілює, але запускаючи це дає помилку сегментації . Просто лінія
int& foo();
сам по собі і компілює, і працює без проблем.
Що означає цей код? Як ви можете призначити значення функційному виклику і чому це не є оцінкою?