Boost logo

Boost :

Subject: Re: [boost] Weak functor: Interested? (How to boost::bind to a weak_ptr)
From: Roman Perepelitsa (roman.perepelitsa_at_[hidden])
Date: 2012-01-11 03:19:00


2012/1/10 Vladimír Tøebický <vladimir.trebicky_at_[hidden]>

> On Tue, Jan 10, 2012 at 10:34 PM, Roman Perepelitsa
> <roman.perepelitsa_at_[hidden]> wrote:
> > 2012/1/10 Vladimír Tøebický <vladimir.trebicky_at_[hidden]>
> >
> >>
> >> boost::function<void(int)> f = boost::bind(boost::weak_fn(&Foo::bar,
> >> some_weak_ptr), _1);
> >> f(1);
> >>
> >
> > It's it better to bind &Foo::bar directly?
> >
> > boost::function<void(int)> f = boost::bind(&Foo::bar, some_weak_ptr,
> _1);
> >
> > Much simpler in my opinion.
>
> That cannot be done, boost::bind() indeed accepts references, pointers
> and shared_ptrs for member functions but doesn't accept weak pointers,
> because a weak pointer cannot be trivially converted to shared_ptr (or
> anything that leads to the corresponding class instance).

It can be done. In fact, it has already been done. See
http://lists.boost.org/boost-users/2011/09/70647.php.

Roman Perepelitsa.


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