std::vector<int> v の各要素を範囲forで書き換えたいとき、正しい書き方はどれですか?
範囲forで要素そのものを変更するには、参照で受ける必要があります。auto& x とすればxは各要素への参照になり、x *= 2 がvectorの中身に反映されます。auto x はコピーを受け取るため、変更しても元の要素は変わりません。const auto& はconst参照なので変更しようとするとコンパイルエラーになり、const auto も同様に変更できません。大きなオブジェクトを読み取るだけなら、コピーを避けるために const auto& を使うのが一般的です。