2011-07-28 36 views
12

考虑下面的代码:命名右值引用的类型是什么?

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后)。

回答

13

类型的x(变量)的int&&。所以decltype(x)产量为int&&。表达式x的类型是int。如果表达式是一个左值,则decltype((x))会生成一个表达式类型的左值引用。所以decltype((x))收益率int&

+1

嗯。 C++。可口。 –