如何使用boost lambda为集合中的每个元素调用方法?

时间:2013-10-16 16:17:48

标签: c++ boost stl lambda

我有一个shared_ptr到观察者实例的列表。我想使用boost lambdas在每个观察者上调用notify方法,如下所示:

list<ObserverSharedPtr> observers;
...
for_each(observers.begin(), observers.end(), _1->notify(event));

但是,上面的代码会产生以下编译错误:

error: base operand of `->' has non-pointer type `boost::arg<1>'

我的问题是,我如何利用boost lambdas为STL集合中的每个元素调用一个方法?

1 个答案:

答案 0 :(得分:1)

使用boost::bindboost::lambda::bind

for_each(observers.begin(), observers.end(), boost::bind(&Observer::notify, _1, event));