auto_ptr(auto_ptr_ref<X> r) throw();
Effects: Calls p.release() for the auto_ptr p that r holds.
Postconditions: *this holds the pointer returned from release().
template<class Y> operator auto_ptr_ref<Y>() throw();
Returns: An auto_ptr_ref<Y> that holds *this.
template<class Y> operator auto_ptr<Y>() throw();
Effects: Calls release().
Returns: An auto_ptr<Y> that holds the pointer returned from release().
auto_ptr& operator=(auto_ptr_ref<X> r) throw()
Effects: Calls reset(p.release()) for the auto_ptr p that r holds a reference to.
Returns: *this