Boost logo

Boost :

Subject: Re: [boost] [Bind] How do I get bind to deduce the return type of for_each?
From: Robert Jones (robertgbjones_at_[hidden])
Date: 2010-04-20 11:41:53


On Sat, Apr 17, 2010 at 1:30 PM, Daniel Walker <daniel.j.walker_at_[hidden]>wrote:

> On Sat, Apr 17, 2010 at 7:25 AM, Roland Bock <rbock_at_[hidden]> wrote:
> > Thomas Jordan wrote:
> >>
> >> [snip]
> >> Thanks for the suggestion, Roland, I am sure you could get something
> like
> >> this to work easily enough. However, if I understand correctly your
> >> suggestion involves defining a separate functor - myClass - to take the
> >> vocType's, and which I guess wraps the inner call to for_each. I had
> hoped
> >> for a more generic solution which doesn't involve the creation of new
> >> functors. I was hoping I could accomplish the objective of passing an
> >> algorithm into an algorithm jgenerically, just doing everything at point
> of
> >> call using just Boost.bind, the std::algorithms (wrapped) and using if
> >> necessary some boost.function functors to help type deduction. Are we
> >> saying this isn't possible?
> >>
> >
> > Hi Thomas,
> >
> > we don't say it isn't possible :-)
> >
> > Here you go:
> >
> <snip>
> >
> > for_each(vov.begin(), vov.end(),
> > bind(for_each< vocType::iterator, function<void (myClass&)> >,
> > bind<vocType::iterator>(&vocType::begin, _1),
> > bind<vocType::iterator>(&vocType::end, _1),
> > protect(bind(&myClass::func, _1))
> > )
> > );
>
> Oh yeah, that's a good idea! Instantiate std::for_each with a void
> boost::function! That's a portable solution as well, since bind and
> function are available on practically any compiler, even ancient,
> substandard ones.
>
> Daniel Walker
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>

Could you do this with directory iteration too? Say to call a function for
every file in every directory in
the current directory. Ie., a two level tree walk, rather than a fully
recursive one, but all in one statement?

- Rob.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk