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 08:54:30

2012/1/11 Stewart, Robert <Robert.Stewart_at_[hidden]>

> shared_ptr doesn't overload ->* which, I thought, was the purpose of
> get_pointer().

ptr_adapter overloads ->*.

The fix of the code at quite simple.

1. Replace raw pointers with weak_ptr in invoker and ptr_adaptor.
2. get_pointer becomes:

        template<class T>
        ptr_adapter<T> get_pointer(const boost::weak_ptr<T> &p)
                return ptr_adapter<T>(p);

3. invoker::operator() becomes:

R operator()() const
    if (shared_ptr<C> p = ci_.first.lock())
          return (p.get()->*ci_.second)();
        return R();

Roman Perepelitsa.

Boost list run by bdawes at, gregod at, cpdaniel at, john at