$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Beman Dawes (bdawes_at_[hidden])
Date: 2002-09-09 13:46:50
At 11:13 AM 9/9/2002, Peter Dimov wrote:
 >From: "Thomas Witt" <witt_at_[hidden]>
 >
 >> ptr != p should be a precondition violation.
 >
 >I agree (which is why shared_ptr's reset acts the way it does now), 
but...
 >
 >> I can't think of a good reason
 >> why a scoped_ptr should be reset with a pointer that is already taken
 >care
 >of
 >> by a scoped ptr.
 >
 >... the reason for the current behavior is std::auto_ptr compatibility.
 >auto_ptr::reset is required to check for self-resets.
 >
 >> The current code fails if the dtor is called during a call to reset. 
Yes,
 >> things like this can happen. The managed ptr will be deleted twice.
 >
 >If you can demonstrate this with an example, you may be able to convince
 >Beman and Greg that scoped_ptr doesn't need to check for self-resets. :-)
The original code didn't check for self-reference IIRC.  Someone sent in a 
use case, but I can't remember what it was, and I can't remember if it 
really applied to scoped_ptr.
Personally, I don't think I've ever used scoped_ptr::reset unless ptr==0.
Hum... That brings up a question.  If myptr.get()==0, then shouldn't 
myptr.reset() be harmless?
--Beman
--Beman