2011-07-28 14 views
12

は、次のコードを考えてみましょう:だから名前付きrvalue参照の型は何ですか?

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

Mmmm。 C++。おいしい。 –

関連する問題