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