clang начал внедрять краткие ранговые настройки для циклов из n3994. Часто при внедрении циклов, основанных на диапазонах, мы видим код в форме for (auto & v : vector)
, чтобы избежать ненужного копирования. Кажется, что n3994 предлагает, чтобы for (auto && v : vector)
превосходил всех. У меня есть несколько вопросов:
- Какие преимущества дает последняя форма над первым? Почему мы обычно ходим с
auto &
вместоauto &&
, если последнее явно выгодно? - Заставляет ли новый цикл, основанный на диапазонах, равным
auto &&
сломать существующий код? Это повлияет на новый код? - Разве это не означало бы, что их код на самом деле эквивалентен
auto &&
?