|
Boost Users : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-09-18 14:48:45
Alexander Shyrokov wrote:
> An iterator is pointing to a pointer, how do I add another
> dereferencing operator in the algorithm, so it works on values?
>
> void f(int& i);
> vector<int*> a;
> // this would work if f would be void f(int* i)
> for_each(a.begin(),a.end(),boost::bind(f,_1));
>
> I could define a dereferencing predicate:
> template<class T>
> struct deref{
> typedef T result_type;
> T operator()(T* p){assert(p);return *p;}
> };
> for_each(a.begin(),a.end(),boost::bind(f,boost::bind(deref<int>,_1)));
>
> but this requires supplying a template parameter. Is there an easier
> way?
Not with boost::bind, but Lambda allows you to write bind( f, *_1 ). You
need to use Lambda's bind and _1 though. :-)
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net