prvalue 是 C++ 表达式的“值类别(value category)”之一,来源于 pure rvalue(“纯右值”)。它通常表示临时值或不对应可长期定位对象的值,常见于字面量(如 42)、临时对象(如 std::string("hi"))以及按值返回的结果(如 f() 的返回值)。
(注:C++ 里还有 lvalue、xvalue 等其他值类别。)
/ˌpiː ɑːr ˈvæljuː/
42 is a prvalue.
42 是一个 prvalue(纯右值)。
In std::string s = make_name();, the expression make_name() is a prvalue that can be moved into s.
在 std::string s = make_name(); 中,表达式 make_name() 是一个 prvalue,它的结果可以被移动到 s 中。
prvalue 来自 C++ 标准对表达式分类的术语:pure rvalue(纯右值)。早期 C++ 常用 “rvalue/lvalue” 二分法;后来标准将右值进一步细分为 prvalue 与 xvalue,以更精确描述临时对象、移动语义等行为。