Выбор ответа Senior Move-семантика обновлено
Схлопывание ссылок
Вопрос
Какой тип получится при using T = int&; для T&&?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: int&. Правило схлопывания: если среди ссылок есть lvalue-ссылка, результат lvalue-ссылка; && && даёт &&. int& && превращается в int&. - int&& получилось бы только из int&& &&. - Ссылка не исчезает. - Через псевдонимы типов и шаблоны «ссылка на…
Варианты ответа
int&&int&правильный ответint- Ошибка компиляции: ссылка на ссылку
Разбор
Правило схлопывания: если среди ссылок есть lvalue-ссылка, результат lvalue-ссылка; && && даёт &&. int& && превращается в int&.
int&&получилось бы только изint&& &&.- Ссылка не исчезает.
- Через псевдонимы типов и шаблоны «ссылка на ссылку» разрешена именно благодаря схлопыванию.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Move-семантика»
- Перенос между складами: map::extract без копий
- Топ участников: сортировка записей без копий строк
- lvalue, prvalue, xvalue
- std::move от const-объекта
- push_back и emplace_back
- std::exchange в перемещении
- Объясни move-семантику
- Допишите обёртку с perfect forwarding