Boost logo

Boost Users :

From: Alexander Shyrokov (shirokov_at_[hidden])
Date: 2006-09-18 11:38:03


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?

Thanks.

-- 
Regards,
     Alexander.                http://sjcomp.com

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