toge's diary

コンピュータ関連の趣味をつらつらと。

boost::bindではまる

久しぶりにSTL, boostの世界に入ろうとしたら、はまりまくる。
ううーん、昔はどうやってやってたんだっけか?

class Updater
  : public std::unary_function< T, void >
{
public:
  void operator()(const T& t)
  {
    ....
  }
};

typedef std::vector< Updater< Data > > Updaters;

Updaters updaters;

...

Updaters::iterator p    = updaters.begin();
Updaters::iterator pend = updaters.end();

for_each(p, pend, bind(Updater::operator(), _1, data));

最後の一行が見事に失敗します。

for (; p != pend; p++)
{
  (*p)(data);
}

こうやって対処中。なんか格好悪いな。