我试图了解值类别的差异,并且由Microsoft找到了this document

c++ - 什么是C++中的xvalue-LMLPHP

- An xvalue is a glvalue that [...]
- An lvalue is a glvalue that is not an xvalue.
- An rvalue is a prvalue or an xvalue.

为什么xvalueglvalue?他们为什么不说An xvalue is an glvalue or an rvalue?在我看来,这个措词是故意传达的,但我不明白为什么

最佳答案



因为尚未定义rvalue,并且因为rvalue将根据xvalue进行定义。必须定义一个而不依赖另一个以避免定义成为循环。

同样因为xvalue既是glvalue,也是,是rvalue。

此外,xvalue是不是lvalue的glvalue。更进一步,xvalue是不是prvalue的rvalue。最后,xvalue是既不是左值也不是prvalue的表达式。



只定义了glvalue和prvalue。请参阅前面提到的避免循环定义。



好了,您已经看到了它的定义。该标准具有以下非规范性注释,可提供更多信息:

10-06 13:34