|  | #ifndef INPUTS_MEMORY_H | 
|  | #define INPUTS_MEMORY_H | 
|  |  | 
|  | namespace std { | 
|  |  | 
|  | inline namespace _1 { | 
|  |  | 
|  | template <class Y> struct auto_ptr_ref { | 
|  | Y *y_; | 
|  | }; | 
|  |  | 
|  | template <class X> class auto_ptr { | 
|  | public: | 
|  | typedef X element_type; | 
|  | explicit auto_ptr(X *p = 0) throw() {} | 
|  | auto_ptr(auto_ptr &) throw() {} | 
|  | template <class Y> auto_ptr(auto_ptr<Y> &) throw() {} | 
|  | auto_ptr &operator=(auto_ptr &) throw() { return *this; } | 
|  | template <class Y> auto_ptr &operator=(auto_ptr<Y> &) throw() { | 
|  | return *this; | 
|  | } | 
|  | auto_ptr &operator=(auto_ptr_ref<X> r) throw() { return *this; } | 
|  | ~auto_ptr() throw() {} | 
|  | auto_ptr(auto_ptr_ref<X> r) throw() : x_(r.y_) {} | 
|  | template <class Y> operator auto_ptr_ref<Y>() throw() { | 
|  | auto_ptr_ref<Y> r; | 
|  | r.y_ = x_; | 
|  | return r; | 
|  | } | 
|  | template <class Y> operator auto_ptr<Y>() throw() { return auto_ptr<Y>(x_); } | 
|  |  | 
|  | private: | 
|  | X *x_; | 
|  | }; | 
|  |  | 
|  | template <> class auto_ptr<void> { | 
|  | public: | 
|  | typedef void element_type; | 
|  | }; | 
|  |  | 
|  | } // namespace _1 | 
|  |  | 
|  | } // end namespace std | 
|  |  | 
|  | #endif // INPUTS_MEMORY_H |