次のようなコードがあります。
bool finished = false;
size_t offset = 0;
for (Iter i = items.begin();
i != items.end() || (finished = !finished);
finished ? i : ++i, ++offset)
{
do_some_work();
if (some_condition(other_collection[offset]))
{
i = items.insert(i, new_value());
do_more_work();
if (blah) { continue; }
}
do_more_work();
}
目標は、を含むend()
すべてのイテレータに対して本体を実行することです。
Visual C++ などのコンパイラから「条件式内の割り当て」警告が表示されます。
これらの警告を回避する最も簡単な方法は何ですか?
私はそれらをオフにしたくありません (それらは役に立ちます)。また#pragma
s を挿入したくありません (コンパイラ間で移植性がありません)。
典型的なコンパイラに「はい、ここに代入するつもりです」と伝える短いものを書きたいだけです。
私が見つけた最も簡単な解決策は、関数 (例: assign
) を作成して代わりに呼び出すことですが、このためだけに新しい関数を定義することを回避する方法があるかどうか疑問に思っています。