左值

左值表达式是具有标识但不能隐式移动的表达式。其中包括变量名,函数名,内置解引用运算符使用的表达式和引用左值引用的表达式。

典型的左值只是一个名称,但左值也可以有其他风格:

struct X { ... };

X x;         // x is an lvalue
X* px = &x;  // px is an lvalue
*px = X{};   // *px is also an lvalue, X{} is a prvalue

X* foo_ptr();  // foo_ptr() is a prvalue
X& foo_ref();  // foo_ref() is an lvalue

此外,虽然大多数文字(例如 4'x'等)都是 prvalues,但字符串文字是左值。