An auto_ptr can wrap a raw pointer but this raw pointer should not be a pointer to an array because auto_ptr will not release memory of the array when it goes out of scope. auto_ptr calls delete on the pointer when it goes out of scope. However for memory pointed to by an array pointer is to be freed then delete[] needs to be called and not delete.
How can you have an auto_ptr for a pointer to array?
Even before you try to answer that question, think whether you really need an auto_ptr for array pointer? Unless you are writing a low level library like STLHow, you most likely don’t need an auto_ptr for array pointer. That exactly is the reason why one is not included in the standard C++ library.
Instead use a Vector.
STLHow internally uses auto_ptr for pointer to array. Its implementation is listed below.
Check out STLHow – the STL that is meant to be readable.
// an auto pointer to use with arrays // lets use arrays in create temp and swap idiom template class auto_array { public : auto_array(T *t) : ptr_( t ) { } ~auto_array() { delete[] ptr_; } T *operator->() { return ptr_; } T *release() { T *tmp( ptr_ ); ptr_ = 0; return tmp; } T &operator[](int i) { return ptr_[i]; } private : T *ptr_; };