From: Peter Dimov (pdimov_at_[hidden])
Date: 2008-03-19 15:50:39
Frank Mori Hess:
> On Wednesday 19 March 2008 08:39 am, Peter Dimov wrote:
>> After a brief consideration I think I agree with your approach, though.
>> Nothing better comes to mind. But it would be nice if the deleter
>> replacement happens only if shared_from_this has been called.
> I think that could be done, but would probably require a mutex to protect
> against shared_from_this() getting called concurrently with ownership
I'm not sure. The intended use case is to call shared_from_this from the
constructor, which is being called from:
shared_ptr<X> px( new X );
I can think of contrived examples where X::X passes the shared_ptr to
another thread which converts it to raw pointer and then calls
shared_from_this again... but I think that we can postpone handling such
cases unless and until they arise.
>> , and another that tests the new behavior.
> I can add some stuff to shared_from_this_test.cpp that calls
> from constructors.
No, the new functionality should have its own separate test.
> Regarding the get_deleter breakage, I think I can modify
> sp_counted_impl_pd/sp_counted_impl_pda so their get_deleter methods try to
> unwrap the deleter D if it is of type detail::deleter_wrapper (a class I'm
> currently using as the deleter for the shared_from_this pointers ).
This, too, can probably wait.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk