9
C ++では「int&foo()」は何を意味しますか?
左辺値と右辺値に関するこの説明を読んでいると、次のコード行が突き刺さっていました。 int& foo(); foo() = 42; // OK, foo() is an lvalue 私はそれをg ++で試しましたが、コンパイラは「foo()への未定義の参照」と言っています。追加した場合 int foo() { return 2; } int main() { int& foo(); foo() = 42; } 正常にコンパイルされますが、実行するとセグメンテーション違反が発生します。ただの線 int& foo(); コンパイルするだけで問題なく実行されます。 このコードはどういう意味ですか?どのように値を関数呼び出しに割り当てることができますか、そしてそれはなぜ右辺値ではないのですか?