Boost logo

Boost Users :

From: e r (erwann.rogard_at_[hidden])
Date: 2007-10-02 13:53:17


Nat Goodspeed wrote:
> e r wrote:
>
>> i'm thinking of using something like
>>
>> some_type* fo = new boost::bind(&A::f,_1);
>>
>> and use *fo in place of boost::bind(...). is this crazy? what should
>> some_type be?
>
> You can use boost::function to store the result of a boost::bind expression:
>
> http://boost.org/libs/bind/bind.html#with_boost_function
>
> For instance, you might write:
>
> boost::function<void(const A&)> bound = boost::bind(&A::f, _1);
>
> depending on the signature of A::f.
>
> Note, don't use 'new', just assign the value of boost::bind.

thanks!

i still need a little help, if possible.

boost::function<void(const boost::shared_ptr<A>&)> deref =
boost::bind(&boost::shared_ptr<A>::operator*, _1);

Functor ftor;
std::vector<boost::shared_ptr<A> > vec = ...;
for_each(
        vec.begin(),
        vec.end(),
        boost::bind(
                boost::ref(ftor),
                boost::bind(&boost::shared_ptr<A>::operator*, _1)
        )
);//fine

for_each(
        vec.begin(),
        vec.end(),
        boost::bind(
                boost::ref(ftor),
                deref
        )
);//not fine. see error below
//no match for call to ‘(Functor) (boost::function<void ()(const
//boost::shared_ptr<A>&), std::allocator<void> >&)


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