Deklaracja Klasa auto_ptr jest deklarowana w standardzie ISO/IEC 14882, sekcja 20.4.5 jako: namespace std {

template <class Y> struct auto_ptr_ref {};

template<class X> class auto_ptr { public: typedef X element_type;

// 20.4.5.1 construct/copy/destroy: 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(); template<class Y> auto_ptr& operator=(auto_ptr<Y>&) throw(); auto_ptr& operator=(auto_ptr_ref<X> r) throw();

~auto_ptr() throw();

// 20.4.5.2 members: X& operator*() const throw(); X* operator->() const throw(); X* get() const throw(); X* release() throw(); void reset(X* p =0) throw();

// 20.4.5.3 conversions: auto_ptr(auto_ptr_ref<X>) throw(); template<class Y> operator auto_ptr_ref<Y>() throw(); template<class Y> operator auto_ptr<Y>() throw();

Semantyka Klasa auto_ptr ma semantykę ścisłej własności co oznacza, że instancja auto_ptr jest jedynym właścicielem obiektu, na który ona wskazuje. Przy kopiowaniu auto_ptr, źródłowa instancja ustawia się na wartość null.