Pytanie Jaki jest rodzaj referencji o nazwie rvalue?


Rozważ następujący kod:

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

Jaki jest ten typ x? Czy to jest int&& lub int&?

(Zadałem sobie to pytanie po przeczytaniu ta odpowiedź.)


12
2017-07-28 18:38


pochodzenie




Odpowiedzi:


Typ x (z zmiennej) jest int&&. Więc decltype(x) plony int&&. Typ wyrażenia x jest int. Jeśli wyrażenie ma wartość l, decltype((x)) daje lwartą referencję do typu wyrażenia. Więc decltype((x)) plony int&.


13
2017-07-28 18:40



Mmmm. C ++. Pyszne. - Lightness Races in Orbit