Подтвердить что ты не робот

Каков тип названной ссылки 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&?

(Я задал себе этот вопрос, прочитав этот ответ.)

4b9b3361

Ответ 1

Тип x (переменной) - int&&. Итак, decltype(x) дает int&&. Тип выражения x равен int. Если выражение является lvalue, decltype((x)) дает ссылку lvalue для типа выражения. Итак, decltype((x)) дает int&.