我试图了解值类别的差异,并且由Microsoft找到了this document。
- 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
?在我看来,这个措词是故意传达的,但我不明白为什么 最佳答案
因为尚未定义rvalue,并且因为rvalue将根据xvalue进行定义。必须定义一个而不依赖另一个以避免定义成为循环。
同样因为xvalue既是glvalue,也是,是rvalue。
此外,xvalue是不是lvalue的glvalue。更进一步,xvalue是不是prvalue的rvalue。最后,xvalue是既不是左值也不是prvalue的表达式。
只定义了glvalue和prvalue。请参阅前面提到的避免循环定义。
好了,您已经看到了它的定义。该标准具有以下非规范性注释,可提供更多信息: