左值
左值表示式是具有標識但不能隱式移動的表示式。其中包括變數名,函式名,內建解引用運算子使用的表示式和引用左值引用的表示式。
典型的左值只是一個名稱,但左值也可以有其他風格:
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,但字串文字是左值。