13

次のコードを検討してください。

int&& x = 42;
static_assert(std::is_same<decltype( x ), int&&>::value, "&&");
static_assert(std::is_same<decltype((x)), int& >::value, "&" );

それで、タイプはx何ですか?それはint&&またはint&

(この回答を読んだ後、私は自分自身にこの質問をしました。)

4

1 に答える 1

14

x(変数の)タイプはですint&&。したがってdecltype(x)、を生成しint&&ます。式のタイプxはですint。式が左辺値の場合、式decltype((x))の型への左辺値参照を生成します。したがってdecltype((x))、を生成しint&ます。

于 2011-07-28T18:40:46.250 に答える