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

fre*_*low 13 c++ decltype rvalue-reference c++11

请考虑以下代码:

int&& x = 42;
static_assert(std::is_same<decltype( x ), int&&>::value, "&&");
static_assert(std::is_same<decltype((x)), int& >::value, "&" );
Run Code Online (Sandbox Code Playgroud)

那么,是什么类型的x?是一个int&&还是一个int&

(看完这个答案后,我问自己这个问题.)

Joh*_*itb 14

的类型的x(可变的)是int&&.所以decltype(x)产量int&&.表达式的类型xint.如果表达式是左值,则decltype((x))生成对表达式类型的左值引用.所以decltype((x))产量int&.