Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2005-12-15 00:08:50

"Peter Dimov" <pdimov_at_[hidden]> writes:

> Yuval Ronen wrote:
>> I just thought that if we combine this with the conclusion of the
>> discussion about temporary auto_ptrs being passed to shared_ptr
>> constructors (with the '.release()'), then the result is that I can't
>> assign a temporary auto_ptr to a shred_ptr.
>> If I had a reset(auto_ptr<Y> &), then I could call it with .release(),
>> but since all I have is operator=(auto_ptr<Y> &), I can't use
>> .release(), as I don't have operator=(Y*).
>> No temporary auto_ptrs for me... :-(
> You can use px.reset( function().release() ), as there is a reset( Y* ).

I feel compelled to point out that this idiom opens exception safety
holes where the other one wouldn't. Exception-safe resource
management is, after all, an important role for smart pointers.

Dave Abrahams
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at