2

我想我缺少关于左值到右值标准转换的一些基本内容。

从 C++11 4.1 开始:

非函数、非数组类型 T 的左左值可以转换为纯右值

所以我们声明一个变量x

 int x = 42;

这个范围内的表达式x现在是一个左值(所以也是一个左值)。它满足 4.1 中关于左值到右值转换的要求。

将左值到右值转换应用于表达式的上下文的典型示例是x什么?

4

1 回答 1

4

prvalue(“纯”右值)是标识临时对象(或其子对象)的表达式,或者是不与任何对象关联的值。

struct Bar
{
    int foo()
    {
        int x = 42;
        return x;    // x is converted to prvalue
    }
};

表达式bar.foo()纯右值

或者

Lambda 表达式,例如

[](int x){return x*x;}

§ 3.10.1

prvalue(“纯”右值)是不是 xvalue 的右值。[ 示例:调用返回类型不是引用的函数的结果是纯右值。诸如 12、7.3e5 或 true 之类的文字的值也是纯右值。—结束示例]

n3055

于 2013-07-14T04:21:47.170 回答