C++ 11和C++ 14标准(分别是工作草案)在§3.10.1中说:
prvalue("纯"rvalue)是一个不是xvalue的rvalue.[示例:调用返回类型不是引用的函数的结果是prvalue.诸如12,7.3e5或true之类的文字的值也是prvalue. - 末端的例子]
和
rvalue(历史上所谓的,因为rvalues可能出现在赋值表达式的右侧)是xvalue,临时对象(12.2)或其子对象,或者是与对象无关的值.
这引出了一个问题:表达式如何成为"与对象无关的值"?
我的印象是,表达式的目的是返回对象或void(我不希望它也是一个值).
这些表达式有一些简单而常见的例子吗?
编辑1
要进一步复杂化,请考虑以下事项:
int const& x = 3;
int&& y = 4;
Run Code Online (Sandbox Code Playgroud)
在§8.3.2.5的上下文中,其中包含最有趣的片段:
[...]引用应初始化以引用有效的对象或功能[...]
§8.5.3.1强化了这一点:
声明为T&或T &&的变量,即"对类型T的引用"(8.3.2),应由类型为T的对象或函数或可转换为T的对象初始化. [...]