Boost logo

Boost Users :

Subject: Re: [Boost-users] scoped_ptr::release (again)
From: Yang Zhang (yanghatespam_at_[hidden])
Date: 2009-02-20 22:53:34


Howard Hinnant wrote:
> On Feb 20, 2009, at 1:27 PM, Yang Zhang wrote:
>
>> 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.)
>
> <opinion>
> http://home.roadrunner.com/~hinnant/unique_ptr03.html
>
> (search for "scoped_ptr")
> </opinion>

Nice. Thanks for the pointer (pun intended). I take it boost does not
have unique_ptr, correct? I checked in Boost.TR1 and found nothing. I
did find boost::interprocess::unique_pointer, but that appears to be
different.

I did some digging, and I did find mention of this file on the gcc
mailing lists - I take it this implementation is being included in GNU
libstdc++?

Lastly, I didn't see any rvalue references in this file. I was under
the impression that the implementation of unique_ptr leverages rvalue
references. Is this why there are const_casts present in the code?

-- 
Yang Zhang
http://www.mit.edu/~y_z/

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