C++ 如何使用boost lambda';对集合中的每个元素调用方法?

C++ 如何使用boost lambda';对集合中的每个元素调用方法?,c++,boost,stl,lambda,C++,Boost,Stl,Lambda,我有一个共享给观察者实例的列表。我想使用boost lambdas对每个观察者调用notify方法,如下所示: list<ObserverSharedPtr> observers; ... for_each(observers.begin(), observers.end(), _1->notify(event)); 列出观察者; ... 对于每个(observer.begin()、observer.end()、_1->notify(event)); 但是,上述代码会产生以

我有一个共享给观察者实例的
列表。我想使用boost lambdas对每个观察者调用notify方法,如下所示:

list<ObserverSharedPtr> observers;
...
for_each(observers.begin(), observers.end(), _1->notify(event));
列出观察者;
...
对于每个(observer.begin()、observer.end()、_1->notify(event));
但是,上述代码会产生以下编译错误:

error: base operand of `->' has non-pointer type `boost::arg<1>'
错误:“->”的基操作数具有非指针类型“boost::arg”

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

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

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

为什么您(或任何人)想要使用boost lambdas???只使用C++ LAMBDAS,它们是标准的一部分。@ Walter,我不使用C++ 11.你必须使用<代码> Boo::BooNe/Cuff>。我注意到了,但我不明白为什么。我也不明白为什么当前的编译器仍然使用一个超过10年的标准,即为什么
-std=c++11
不是默认的标准。@Walter可能是因为“当前的编译器”仍然没有很好地实现c++11?例如,看看msvc11的功能集(更不用说msvc10了)。