Получение ссылки на элемент контейнера STL в диапазоне C++11-на основе 'for' цикл

for (Something something : setOfSomething)          // OK
for (Something const& something : setOfSomething)   // OK
for (Something& something : setOfSomething)         // ERROR

error: invalid initialization of reference of type 'Something&'
from expression of type 'const Something'

С каких это пор итератор возвращает const Something? Он должен вернуть либо Something&, либо Something const&. А поскольку цикл for на основе диапазона-интерпретируется как что , у меня нет правдоподобного объяснения происходящему.

Редактировать:Я говорю о unordered_set, а не set, извините за эту путаницу.

5
задан Alexander Shukaev 17 April 2012 в 16:22
поделиться