lvalue-to-rvalue相关内容

在应用间接引用时,标准是否要求指针变量的左值到右值转换?

TL;DR 给定以下代码: int* ptr;*ptr = 0; 在应用间接引用之前,*ptr 是否需要 lvalue-to-rvalue 的 ptr 转换? 该标准在很多地方涵盖了 lvalue-to-rvalue 的主题,但似乎没有指定足够的信息来确定 * 运算符 是否需要这种转换. 详情 左值到右值的转换见N3485 在 4.1 Lvalue-to-rvalue ..

左值与文字之间的比较是否会调用左值到右值转换?

我问了这个问题:常量变量的静态声明 并且显然归结为一个问题,为了比较的目的,浮点左值是否会转换为右值? 因此在此代码中,左值到 const float foo = 13.0F; static_assert(foo> 0.0F,“ foo必须大于0。”); 解决方案 是的,它已执行。基本上是因为 3.0> 1.2 是一个格式正确的表达式,除了操作数的prval ..
发布时间:2020-10-06 19:22:53 C/C++开发

Clang vs G ++左值到右值转换

与此问题一个相关的问题。通过跟踪 slt_pair。 h 和移动。 h ,看来 Clang 和 G ++ 之间的区别是内部的。我尝试模拟对象(pair.first)的分配,与 std_pair.h 的实现相同,输出与 Clang #include 结构Foo { Foo(){ std :: cout ..
发布时间:2020-10-01 22:48:33 C/C++开发

将从函数返回的Rvalue分配给另一个Rvalue

类测试{ public: int n1; }; 测试func(){ return Test(); } int main(){ func()= Test(); } 这对我来说没有意义。如何以及为什么允许这样做?它是未定义的行为吗?如果一个函数返回一个右值,那么如何将一个右值设置为另一个右值?如果我尝试使用任何原始类型进行此操作 ..
发布时间:2020-09-27 07:25:40 C/C++开发

左侧的右值

为什么要编译此代码?我以为ctor返回的右值不在内存中,因此不能用作左值。 #include #include 类别Y { 公共: 明确Y(size_t num = 0) :m_resource {std :: vector(num)} { } std :: vector m_resource; }; ..
发布时间:2020-09-27 07:18:56 C/C++开发

左值到右值隐式转换

我看到在整个C ++标准的许多地方使用的术语“左值到右值转换”。这种转换通常是隐含的,就我所知。 标准的短语的一个意想不到的特征是,他们决定对待左值到右值作为转换。如果他们说,glvalue总是可以接受,而不是prvalue。那句话实际上有不同的含义吗?例如,我们读取左值和x值是glvalues的例子。我们不读取左值和x值可以转换为glvalues。 在我第一次遇到这个术语之前,我习惯 ..
发布时间:2016-10-14 23:25:51 C/C++开发

关于左值到右值的转换,何时需要?

我在互联网上阅读了很多,似乎很多人提到以下规则(但我在标准中找不到), 加法运算符+(和所有其他二进制运算符)要求两个操作数都为右值,结果为右值。 等等.. 我检查了C ++标准,并清楚地说明(第3.10 / 2节), 每当一个glvalue出现在一个预期为prvalue的 上下文中, glvalue将被转换为prvalue (第5/9节), 每当glvalue ..
发布时间:2016-10-14 11:07:15 C/C++开发

了解关于左值到右值转换的示例

我很难理解这段代码(来自C ++ 14草案标准 [conv.lval] 的示例)如何调用未定义的行为 g(false)。为什么 constexpr 使程序有效? 此外,“不访问 yn “?在 g()的两个调用中,我们返回了 n 数据成员为什么最后一行说' t访问它? struct S {int n; }; auto f(){ S x {1}; constexpr S y { ..
发布时间:2016-10-11 23:20:37 C/C++开发

我想我可能已经想出了数组类型的右值的例子

C ++ 4.2节03 N°1:的结果 左值或类型的右值“数组的NT”或“结合的T未知的阵列”可以被转换成类型的“指针T.”右值的结果是一个指针数组的第一个元素。 的 什么已经在此声明被迷惑了很长的时间,我是,我不明白是什么数组类型的右值意味着什么。这就是说,我不能拿出一个前pression其类型是一个数组,其结果是右值。我读这线程,基本上问同样的问题,接受的答案是“没有,没有数组类型的右值“ ..
发布时间:2016-05-30 23:32:41 C/C++开发

数组和右值

$ 8.4 / 1 - “左值或类型的右值 “数组N个T”或“未知阵列 结合的T“可被转换为一个 右值类型的“指针到T”的 结果是一个指向第一个 数组的元素“ 我不知道我们如何得到比初始化/申报期间以外的数组类型的右值? 解决方案 我不知道你在这方面是指什么是“初始化/宣言”。但数组类型的右值都不算少见。 结构数据{int数组[10]; };数据f()的;INT的main ..
发布时间:2016-05-30 23:13:00 C/C++开发