我认为我缺少一些关于左值到右值标准转换的基本知识。
从 C++11 4.1 开始:
非函数、非数组类型 T 的左值可以转换为纯右值
所以我们声明一个变量x
:
int x = 42;
一种表达x
在此范围内现在是左值(因此也是左值)。它满足 4.1 中左值到右值转换的要求。
将左值到右值转换应用于表达式的上下文的典型示例是什么x
?
prvalue(“纯”右值)是标识临时对象(或其子对象)的表达式,或者是不与任何对象关联的值。
struct Bar
{
int foo()
{
int x = 42;
return x; // x is converted to prvalue
}
};
表达方式bar.foo()
is a prvalue.
OR
Lambda 表达式,例如
[](int x){return x*x;}
§ 3.10.1
prvalue(“纯”右值)是不是 xvalue 的右值。 [ 例子:调用返回类型不是引用的函数的结果是纯右值。诸如 12、7.3e5 或 true 之类的文字值也是纯右值。 —结束示例]
see n3055 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3055.pdf.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)