gpt4 book ai didi

C++11 左值到右值的转换?

转载 作者:搜寻专家 更新时间:2023-10-31 01:48:33 24 4
gpt4 key购买 nike

我想我遗漏了一些关于左值到右值标准转换的基本知识。

从 C++11 4.1 开始:

A glvalue of a non-function, non-array type T can be converted to a prvalue

所以我们声明一个变量x:

 int x = 42;

此范围内的表达式 x 现在是左值(因此也是左值)。它满足4.1中左值到右值转换的要求。

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

最佳答案

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

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

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

参见 n3055 .

关于C++11 左值到右值的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com