Стиль написания range-based цикла

Какой стиль написания range-based цикла лучше использовать и почему: 1), 2), 3) или другой?

// 1)

// всегда
for (auto&& item : range) {

}

// 2)

// для изменяемых значений
for (auto& item : range) {

}

// для неизменяемых значений
for (const auto& item : range) {

}

// для изменяемых std::vector<bool> и т.п.
for (auto&& item : range) {

}

// 3)

// для изменяемых значений
for (auto&& item : range) {

}

// для неизменяемых значений
for (const auto& item : range) {

}

Связанные вопросы:

https://stackoverflow.com/q/21781857

https://stackoverflow.com/q/13130708

https://stackoverflow.com/q/9994789


Ответы (1 шт):

Автор решения: kernel

Лучше использовать первый стиль, потому что не надо думать об изменяемости значений, а всегда использовать один вариант.

→ Ссылка