引用本身是左值吗?

时间:2015-12-01 06:35:49

标签: c++

昨天我看到了一个关于左值的答案,其内容如下:

  

- 一个左值(所谓的历史,因为左值可以出现   赋值表达式的左侧)指定一个函数   或一个物体。 [例子:如果E是指针类型的表达式,那么   * E是一个左值表达式,指的是E指向的对象或函数。作为另一个例子,调用函数的结果   其返回类型是左值引用是左值。 - 例子]

所以出现了一个问题:引用本身是一个左值? 我知道左值引用和右值引用都可以出现在赋值表达式的左侧,但引用既不是函数也不是对象,是否存在矛盾?参考真的是左值吗? 此外,如果引用是左值,则decltype(reference-expression)的类型是什么,例如:

int main (void) { int a = 1; int &b = a; decltype((b)) c; }

c的类型是什么?

1 个答案:

答案 0 :(得分:0)

在您的代码中,表达式b是左值,类型为int

c的声明与int &c相同。 (因为你没有提供初始化程序,所以它形成不良)。如果您确实提供了初始值设定项,则表达式c是一个类型为int的左值。