我试图了解不同的价值类别,我发现了微软的本文件。

- An xvalue is a glvalue that [...]
- An lvalue is a glvalue that is not an xvalue.
- An rvalue is a prvalue or an xvalue.为什么xvalue是glvalue?他们为什么不说An xvalue is an glvalue or an rvalue?在我看来,这个短语是有意表达的,但我不明白为什么
发布于 2019-11-05 01:52:23
为什么他们不说xvalue是一个glvalue还是rvalue?
因为rvalue尚未定义,而且rvalue将被定义为xvalue。其中一项必须在不依赖另一项的情况下加以界定,以避免定义成为循环。
还因为xvalue既是一个glvalue,也是一个,而是一个rvalue。
此外,xvalue是一个glvalue,而不是lvalue。此外,xvalue是一个不是prvalue的rvalue。最后,xvalue是一个既不是lvalue也不是prvalue的表达式。
我不明白为什么他们在那句话里只提到格伦茨
只定义了glvalue和prvalue。参见前面提到的避免循环定义。
C++中的xvalue是什么?
你看过它的定义了。该标准有以下非规范性说明,提供了进一步的信息:
basic.lval注释:表达式如果为xvalue,则为xvalue:
发布于 2019-11-05 01:37:27
这张图表可能有误导性。
有lvalue,xvalue和prvalue。它们是排他性和完全性的,也就是说,每个表达式都恰好是: lvalue、xvalue或prvalue之一。
lvalues和xvalue统称为glvalue。
X值和prvalue统称为rvalue。
所以x值既是值又是r值。
https://stackoverflow.com/questions/58703140
复制相似问题