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
、この混乱について申し訳ありません。