このページを読んで c++11 の右辺値参照について学び始めたばかりですが、最初のページで行き詰まりました。これが私がそのページから取ったコードです。
int& foo();
foo() = 42; // ok, foo() is an lvalue
int* p1 = &foo(); // ok, foo() is an lvalue
int foobar();
j = foobar(); // ok, foobar() is an rvalue
int* p2 = &foobar(); // error, cannot take the address of an rvalue
- なぜ
foo()
左辺値なのですか?基本的に左辺値をfoo()
返すためですか?int&
- なぜ
foobar()
右辺値なのですか?foobar()
返品するからint
ですか? - 一般に、関数が右辺値であるかどうかを気にするのはなぜですか? その記事の残りの部分を読めば、これに対する答えが得られると思います。