auto_ptr<T>& operator=(auto_ptr<>& rhs) throw();
The assignment operator deletes any pointer p that it owns, by evaluating the delete expression delete p. It then
transfers ownership of the pointer stored in rhs, by storing both the pointer value and the ownership indicator from rhs
in *this. It effectively releases the pointer by calling rhs.release(). The function returns *this.
In this implementation, if a translator does not support member template functions, the template:
template<class U>
auto_ptr<T>& operator=(auto_ptr<U>& rhs) throw();
is replaced by:
auto_ptr<T>& operator=(auto_ptr<T>& rhs);