请考虑以下代码:
int&& x = 42;
static_assert(std::is_same<decltype( x ), int&&>::value, "&&");
static_assert(std::is_same<decltype((x)), int& >::value, "&" );
那么,x
的类型是什么?是int&&
还是int&
?
(我在阅读this answer后问自己这个问题。)
答案 0 :(得分:14)
x
(变量的)类型为int&&
。因此decltype(x)
会产生int&&
。表达式x
的类型为int
。如果表达式是左值,decltype((x))
将产生对表达式类型的左值引用。因此decltype((x))
会产生int&
。