Посмотрим на следующий простой диапазон, основанный на цикле:
int a = 5, b = 6;
for (auto & i : {a, b})
{
std::cout << i << std::endl; // Works as expected.
i = 3; // Error!
}
gcc
жалуется на assignment of read-only reference 'i'
, подразумевая, что диапазон, основанный на цикле, используемом с списком инициализаторов, неявно добавляет к ссылочной ссылке const
квалификатор, полностью неспровоцированный.
- Почему это происходит?
- Есть ли работа, позволяющая изменять переменные в диапазоне, основанном на цикле?