私は次のマクロを持っています:
#define FOREACH(decl, c) BOOST_FOREACH(decl, std::make_pair((c).begin(), (c).end()))
(私のコンテナーは可変反復APIを実装していないため、このマクロを使用しています。)
それに関する問題は、それc
が2回評価されることです。
私の質問は、このマクロを次のように修正できるかどうかです。
c
最大で1回評価されます- 最初の条件を満たすために作成されたローカル変数は、それぞれのforeachスコープ内にのみ存在します。