Boost logo

Boost :

From: Daniel Frey (d.frey_at_[hidden])
Date: 2008-04-26 11:58:31


On Sat, 2008-04-26 at 18:34 +0300, Peter Dimov wrote:
> Daniel Frey:
> > When looking at the test case that fails with .use_count() != 0, I don't
> > really see why the call to shared_from_this() in line 130 should throw.
>
> The test looks correct to me. After early_px.reset() and px.reset(), no
> shared_ptr owns &x. Their initial use_count() is 2, so after the two resets
> a weak_ptr to &x should expire (it might be a good idea to add it to the
> test). We'll indeed need weak_count::empty to make this and test5 both pass,
> though.

The current test protects against misuse of shared_from_this, the
exception it expects is just a diagnostic for it. My new version even
allows one more use case:

When the refactored implementation reaches line 130, the
weak_count.use_count() == 0 is true, thus init_weak_once() initializes a
fresh _shared_count/_weak_count pair and expects someone else to take
over ownership later as if the object was just created. Unless I'm
missing something...

Regards, Daniel


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