根据这份文件:
http://www.stroustrup.com/terminology.pdf
- l-values具有身份并且不可移动。
- pr-values是可移动的但没有身份。
- x-values具有身份并且可移动。
我有几个关于这些的问题。
a. x-value具有身份的例子是什么?以下内容是不合法的:
Foo f;
&std::move(f);
b. 我可以重载类Foo的&运算符,并使其返回this,以便以下内容合法:&Foo(5);
但是像Foo(5)这样的pr值不能具有身份。或者有更微妙的身份解释吗?
auto x = 42; static_cast<int&&>(x)
,这个static_cast
的结果就是一个xvalue。 - dyp