C++ リファレンスによると、set::insert は、反復子が新しく挿入された要素、または存在する場合は既存の要素のいずれかを指すペアを返すと想定されています。
しかし、次の簡単な例が示すように、イテレータへの割り当てに問題があります。
int main() {
set<int> set;
*set.insert(5).first = 5;
return 0;
}
G++ と Clang を試しましたが、どちらも機能しません。
set.cc:7:24: error: read-only variable is not assignable
*set.insert(5).first = 5;
~~~~~~~~~~~~~~~~~~~~ ^
ドキュメントには、反復子が const オブジェクトを参照する必要があることを示すものは何も見つかりません。また、型シグネチャにもこれを示すものはありません。これがうまくいかない理由を誰かが理解するのを手伝ってくれますか?