template<class _Ty> class Auto_ptr { // wrap an object pointer to ensure destruction public: explicit Auto_ptr(_Ty *_Ptr = 0) : _Myptr(_Ptr){} ~Auto_ptr(){delete _Myptr;} _Ty& operator*() const {return (*_Myptr);} _Ty *operator->() const {return (_Myptr);} private: _Ty *_Myptr; };