Sign in to follow this  

boost::function and std::for_each

Recommended Posts

struct call_it { template<typename T> void operator() (T &f) const { f(); } };
for_each(b, e, call_it());

You could also do std::mem_fun with boost::function<void ()>::operator(), maybe.

The algorithms that take functors are designed to apply functors to the elements.

The fact that a container contains a bunch of functors leads one to the false expectation that there should be some nice way to call each functor-element, but this isn't how the STL algorithms are designed.

Share this post

Link to post
Share on other sites
typedef std::vector< boost::function<void ()> > ContainerType;

ContainerType container;

std::for_each(container.begin(), container.end(), boost::bind(&ContainerType::value_type::operator(), _1));

Edited a few times because I'm an idiot.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this