左值
左值表达式是具有标识但不能隐式移动的表达式。其中包括变量名,函数名,内置解引用运算符使用的表达式和引用左值引用的表达式。
典型的左值只是一个名称,但左值也可以有其他风格:
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,但字符串文字是左值。