是否有任何表达式可以评估给出左值?我相信表达式会产生一个可以赋值给左值的右值。
答案 0 :(得分:7)
如果您有x[y] = z;
,x[y]
是左值,z
是左值。显然x[y]
是一个表达式,可以进行评估。因此,可以对其进行评估以给出左值。
答案 1 :(得分:2)
Gabe是正确的,但更具体地说,任何导致引用的表达式都是左值。但这不是全部,指针deferences和数组访问都是导致左值的表达式。
答案 2 :(得分:1)
另一个例子是一个返回引用的函数,即std::vector
的索引运算符(reference operator[]( size_type n
),所以你可以这样做:
std::vector< Z > vector;
vector[ y ] = z;
答案 3 :(得分:1)
又一个例子:
(which ? x : y) = 10;