Что означает int & foo () в C ++?

Во время чтенияэто объяснение на lvalues ​​и rvalues ​​эти строки кода торчат мне:

int& foo();
foo() = 42; // OK, foo() is an lvalue

Я пробовал это в g ++, но компилятор говорит "неопределенная ссылка на foo ()". Если я добавлю

int foo()
{
  return 2;
}

int main()
{
  int& foo();
  foo() = 42;
}

Компилируется нормально, но при запускеошибка сегментации, Просто линия

int& foo();

сам компилируется и запускается без проблем.

Что означает этот код? Как вы можете назначить значение для вызова функции, и почему это не rvalue?

Ответы на вопрос(9)

Ваш ответ на вопрос