关于C++值类别:是否每个xvalue既是glvalue又是rvalue?
关于C++中xvalue值类别的确认
是的,每个xvalue同时属于glvalue和rvalue,这是C++标准定义的明确逻辑:
- 标准直接规定xvalue是「可复用资源的glvalue」,这就明确了xvalue属于glvalue的子集。
- 同时标准对rvalue的定义就是「xvalue或prvalue」,这意味着xvalue本身就是rvalue的组成部分,自然归属于rvalue范畴。
你之前的疑惑可能是没理顺定义的层级:prvalue的定义确实没涉及xvalue,但rvalue的定义已经直接把xvalue包含在内了,不需要通过prvalue的定义来推导。换个更直观的分类视角:
C++表达式的值类别里,xvalue是glvalue和rvalue的交集——它既属于glvalue(能标识一个对象或函数),又属于rvalue(拥有可被移动的资源,符合右值的特性)。
内容的提问来源于stack exchange,提问作者EL IAS
相关产品推荐
相关产品推荐

