Boost logo

Boost :

From: Daniel Frey (d.frey_at_[hidden])
Date: 2008-03-21 11:42:40


On Fri, 2008-03-21 at 16:30 +0200, Peter Dimov wrote:
> Daniel Frey:
>
> > is there any reason why shared_ptr does not have a ctor that takes an
> > auto_ptr and a deleter?
>
> shared_ptr assumes that an object that is owned by an auto_ptr needs to be
> destroyed by delete, because that is what the auto_ptr would do if, for
> example, an exception is thrown before the line that transfers the ownership
> to a shared_ptr.

In my scenario, the deleter tries to store the object in a pool instead
of deleting it. From that pool, it will later be either reused or
actually deleted. Since I'm just deferring the 'delete', it's fine when
auto_ptr does it immediately in case of exceptions.

> > I also wonder if there is a resource leak if I just write:
> >
> > auto_ptr<T> a = ...;
> > my_deleter d = ...;
> >
> > shared_ptr<T> s( a.release(), d );
>
> No, there isn't.

Good to know. As long as this works, the missing ctor is no big deal for
me. Thanks.

Regards, Daniel


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