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가 아닌가?