Правильный стиль объявления for на основе диапазона

В этом вопросеупоминалось очевидное идиоматическое использование C++11 range-based for.

for (auto& elem: container) {
  // do something with elem
}

Однако у меня были сомнения относительно того, какую ссылку вы должны использовать. Итераторы ввода могут возвращать rvalue. Хотя неявный тип, представленный auto, может быть выведен к const, который связывался бы со значением r, похоже, этого не происходит.

Является ли наилучшей общей практикой использование идеальной переадресации?

for (auto && elem: container) {
  // do something with elem
}

Я не вижу здесь недостатков, но выглядит это слишком мило. Может быть, я просто еще недостаточно написал C++11.

12
задан Community 23 May 2017 в 12:04
поделиться