命名的右值参考的类型是什么?

时间:2011-07-28 18:38:35

标签: c++ c++11 rvalue-reference decltype

请考虑以下代码:

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后问自己这个问题。)

1 个答案:

答案 0 :(得分:14)

x(变量的)类型为int&&。因此decltype(x)会产生int&&。表达式x的类型为int。如果表达式是左值,decltype((x))将产生对表达式类型的左值引用。因此decltype((x))会产生int&