我认为我缺少一些关于左值到右值标准转换的基本知识。
从 C++11 4.1 开始:
非函数、非数组类型 T 的左值可以转换为纯右值
所以我们声明一个变量x:
int x = 42;
Run Code Online (Sandbox Code Playgroud)
此范围内的表达式x现在是左值(因此也是左值)。它满足 4.1 中左值到右值转换的要求。
将左值到右值转换应用于表达式的上下文的典型示例是什么x?
prvalue(“纯”右值)是标识临时对象(或其子对象)的表达式,或者是不与任何对象关联的值。
\n\nstruct Bar\n{\n int foo()\n {\n int x = 42;\n return x; // x is converted to prvalue\n }\n};\nRun Code Online (Sandbox Code Playgroud)\n\n该表达式bar.foo()是纯右值。
或者
\n\nLambda 表达式,例如
\n\n[](int x){return x*x;}\nRun Code Online (Sandbox Code Playgroud)\n\n\xc2\xa7 3.10.1
\n\n右值 (\xe2\x80\x9cpure\xe2\x80\x9d 右值) 是不是 x 值的右值。[ 示例:调用返回类型不是引用的函数的结果是纯右值。诸如 12、7.3e5 或 true 之类的文字值也是纯右值。\xe2\x80\x94结束示例]
\n\n参见n3055。
\n| 归档时间: |
|
| 查看次数: |
2263 次 |
| 最近记录: |