If you don’t want to change the items as well as want to avoid making copies, then auto const &
is the correct choice:
for (auto const &x : vec)
Whoever suggests you to use auto &
is wrong. Ignore them.
Here is recap:
- Choose
auto x
when you want to work with copies. - Choose
auto &x
when you want to work with original items and may modify them. - Choose
auto const &x
when you want to work with original items and will not modify them.