私は次のマクロを持っている:(。私のコンテナが可変反復APIを実装していないので、私は、このマクロを使用しています)再定義BOOST_FOREACHマクロ安全
#define FOREACH(decl, c) BOOST_FOREACH(decl, std::make_pair((c).begin(), (c).end()))
それに伴う問題、ということですc
は2回評価されます。
私の質問は、このマクロはように固定することが可能です。
c
が第一の条件は、それぞれのforeachの範囲内でのみ生きる満たすために作成されたすべてのローカル変数- 一度ほとんどで評価されます。
このようなマクロハッカーを避け、反復処理を行う場合は、反復文(またはアルゴリズム関数テンプレート)を使用することをお勧めします。 –
@mark、厳密なC++ 03である必要がありますか? g ++固有の拡張機能を許可しますか? –
@Aaron - VS2010を使用しています。したがって、g ++の仕様は範囲外です。 – mark