
11 Jan
2012
11 Jan
'12
1:54 p.m.
2012/1/11 Stewart, Robert <Robert.Stewart@sig.com>
shared_ptr doesn't overload ->* which, I thought, was the purpose of get_pointer().
ptr_adapter overloads ->*. The fix of the code at http://lists.boost.org/boost-users/2011/09/70647.phpis 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)(); else return R(); } Roman Perepelitsa.