2011-07-28 31 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++。可口。 –