BOOST_FOREACH が繰り返し実行されているコンテナーが BOOST_FOREACH スコープ内で変更された場合はどうなりますか?
BOOST_FOREACH は初期状態を「フリーズ」しますか?
BOOST_FOREACH が繰り返し実行されているコンテナーが BOOST_FOREACH スコープ内で変更された場合はどうなりますか?
BOOST_FOREACH は初期状態を「フリーズ」しますか?
この場合、動作は未定義です。の公式ドキュメントのホイストとイテレータの無効化を見てくださいBOOST_FOREACH
。
容器にもよると思います。
本当の問題は、トラバーサルの (残りの) イテレータ範囲が無効化されているかどうかです。
これは変更によって異なります。std
アルゴリズムはその動作で指定されます。どのイテレータがいつ無効化されるかについて言及しています。
また、イテレータのタイプに依存する場合もあります。
vector::erase
後続のすべての反復子を無効にしますlist::erase
ではない