在 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] 的类型是标识符的类型。结果是标识符表示的实体。如果实体是函数、变量或数据成员,则结果为左值,否则为纯右值。