class Test {
public:
int n1;
};
Test func() {
return Test();
}
int main() {
func() = Test();
}
これは私には意味がありません。これが許可される方法と理由は何ですか? 未定義の動作ですか?関数が右辺値を返す場合、右辺値を別の右辺値に設定するにはどうすればよいでしょうか? プリミティブ型でこれを試してみると、予想どおりのエラーが発生します。
左辺値はメモリ内の場所であることを知っているので、関数は一時的な左辺値 (右辺値?) を作成し、それを別の左辺値に割り当てますか? 誰かがこの構文がどのように機能するか説明できますか?