Boost logo

Boost Users :

Subject: Re: [Boost-users] [bind] How to dereference _1 in a boost::bindexpression
From: Peter Dimov (pdimov_at_[hidden])
Date: 2008-10-02 10:25:17


Peter Barker:
...
> void accept(TheClass& tc)
> {
> }
>
> int main()
> {
> std::vector<TheClass*> cont;
>
> // Compile error - how to dereference _1 ???
> std::for_each(cont.begin(),cont.end(),boost::bind(&accept,_1));
> }
>
> How can I dereference _1 so I can use the accept function?

With boost::bind, there's no easy way to dereference _1. You'd need

template<class T> T& deref( T* p ) { return *p; }

std::for_each( cont.begin(), cont.end(),
    boost::bind( accept, boost::bind( deref<TheClass>, _1 ) )
);


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