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
, извините за эту путаницу.