gpt4 book ai didi

c++ - 使用位域通过示例理解 glvalue 概念?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:52:12 25 4
gpt4 key购买 nike

我正在阅读逗号运算符 (N3797::5.18 [expr.comma]) 并遇到以下内容:

The type and value of the result are the type and value of the right operand; the result is of the same value category as its right operand, and is a bit-field if its right operand is a glvalue and a bit-field.

引用位域的表达式怎么可能是非左值?

struct A
{
unsigned int a : 3;
}

A a{7};

int main()
{
++a.a;
std::cout << a.a; //0
}

最佳答案

免责声明:此答案在其发布的确切时间和日期似乎有效。 future 的读者不应该在没有检查链接源本身的更新进度的情况下依赖它的有效性

关于可能发生纯右值位域的段落误导性暗示存在未决问题,precisely 1925 :

According to 5.18 [expr.comma] paragraph 1,

The type and value of the result are the type and value of the right operand; the result is of the same value category as its right operand, and is a bit-field if its right operand is a glvalue and a bit-field.

位域结果的描述似乎表明操作数可能不是左值但仍可能是位域。似乎没有针对纯右值位域的规范性禁止,因此大概应该添加一个,并且应该调整此措辞以消除可能存在这种东西的建议。

在撰写本文时,状态为正在起草,因此我相信需要进行一些额外的迭代才能对此进行更改。还有 clang's 1925 in the defect report目前将其列为“未解决”。

关于c++ - 使用位域通过示例理解 glvalue 概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26458656/

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