在 C++11 中,我对类型之间的区别T以及reference to T它们适用于命名变量的表达式感到有些困惑。具体考虑:
int main()
{
int x = 42;
int& y = x;
x; // (1)
y; // (2)
}
x上面(1)中的表达式是什么类型?是int还是lvalue reference to int?(它的值类别显然是一个lvalue,但这与它的类型是分开的)
y同样,上面 (2) 处的表达式的类型是什么?是int还是lvalue reference to int?
它在 5.1.1.8 中说:
[an identifier primary expression] 的类型是标识符的类型。结果是标识符表示的实体。如果实体是函数、变量或数据成员,则结果为左值,否则为纯右值。