昨天我看到了一个关于左值的答案,其内容如下:
- 一个左值(所谓的历史,因为左值可以出现 赋值表达式的左侧)指定一个函数 或一个物体。 [例子:如果E是指针类型的表达式,那么 * E是一个左值表达式,指的是E指向的对象或函数。作为另一个例子,调用函数的结果 其返回类型是左值引用是左值。 - 例子]
所以出现了一个问题:引用本身是一个左值? 我知道左值引用和右值引用都可以出现在赋值表达式的左侧,但引用既不是函数也不是对象,是否存在矛盾?参考真的是左值吗? 此外,如果引用是左值,则decltype(reference-expression)的类型是什么,例如:
int main (void) { int a = 1; int &b = a; decltype((b)) c; }
c的类型是什么?
答案 0 :(得分:0)
在您的代码中,表达式b
是左值,类型为int
。
c
的声明与int &c
相同。 (因为你没有提供初始化程序,所以它形成不良)。如果您确实提供了初始值设定项,则表达式c
是一个类型为int
的左值。