Boost logo

Boost Users :

Subject: Re: [Boost-users] scoped_ptr::release (again)
From: anony (janezz55_at_[hidden])
Date: 2009-02-25 10:40:27


I experienced a similar problem once with boost::shared_ptr<>. I've
solved it using:

boost::shared_ptr<std::auto_ptr<...> > p;

then you can call:

p->release();

maybe

boost::scoped_ptr<std::auto_ptr<...> > p;

would work in your case.

Yang Zhang pravi:
> From http://www.boost.org/doc/libs/1_36_0/libs/smart_ptr/scoped_ptr.htm:
>
> "If scoped_ptr had a release() member, it would become possible to
> transfer ownership of the held pointer, weakening its role as a way of
> limiting resource lifetime to a given context. Use std::auto_ptr where
> transfer of ownership is required. (supplied by Dave Abrahams)"
>
> But there already is a way to escape the scope, via swap().
>
> Would it make more sense to just provide release() and have users
> specify const if they want? (const scoped_ptr/scoped_array would
> effectively disallow swapping/releasing.)


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net