class hoge {
public:
hoge(void) : p(0) {}
void func(void) { /* pに要素を追加したり削除したりする */ }
static void bind(some_std_container<hoge> * p) { this->p = p; }
private:
some_std_container<hoge> * p;
};

int main(void) {
some_std_container<hoge> c;
hoge * p[N];
for(int i = 0; i != N; ++i) p[i] = new hoge;

BOOST_FOREACH(hoge * p, c) { p->func(); }

return 0;
}


上のようにforeach回りてる間に要素が増減する場合ってどうするの?
いちいちコンテナを複製してから回すとコストがかかっていやな気持になる気がします