Приложения const && в диапазоне-для?

Существуют ли случаи, когда имеет смысл использовать const&& для циклов диапазона?

for (const auto && x : c) // ?

Ответы

Ответ 1

Короткий ответ: нет, для const auto&& нет использования range-for loops (или иначе)

Вы бы использовали rvalue references, если хотите переместить объекты оптимизированным образом. Вы не можете этого сделать (в общем), если вы не можете изменить перемещенный объект. Итак, const rvalues (*) не имеют практического применения (вы не можете перейти от них, потому что вы не можете их изменить).

range-for loops ничего не приносят в таблицу в этом обсуждении const auto&&.


Проверьте, например, это сообщение SO: Использовать ссылки rvalue для константы?

Единственное найденное использование ссылки const rvalue - удаление некоторых перегрузок функций. Это не относится к range-for loops.


(*), кстати, const auto&& является ссылкой на константу rvalue, а не ссылкой на пересылку.