C++ 标准中值类别的中文翻译
以下内容是《ISO/IEC 14882:2024》[7.2.1] Value category [basic.lval] 部分的中文翻译。标准文件可从此仓库下载。
expression
/ \
/ \
glvalue rvalue
/ \ / \
/ \ / \
lvalue xvalue prvalue
- glvalue(泛左值)是一个表达式,其求值结果决定了某个对象或函数的身份(identity)。
- prvalue(纯右值)是一个表达式,其求值用于初始化一个对象、或在特定上下文中计算某个运算符的操作数,或者是一个类型为 cv void 的表达式。
- xvalue(亡值)是一个 glvalue,它表示一个其资源可以被重用的对象(通常是因为该对象即将结束其生命周期)。
- lvalue(左值)是一个不是 xvalue 的 glvalue。
- rvalue(右值)是一个 prvalue 或者 xvalue。
每一条表达式恰好属于本分类体系中以下三种基本类别之一:lvalue、xvalue 或 prvalue。这种表达式的属性被称为它的值类别(value category)。