Anauto_ptr
owns the object it holds a pointer to. Copying anauto_ptr
copies the pointer and transfers ownership to the destination. If more than oneauto_ptr
owns the same object at the same time the behavior of the program is undefined.
The uses ofQuoted from [20.4.5]/3.auto_ptr
include providing temporary exception-safety for dynamically allocated memory, passing ownership of dynamically allocated memory to a function, and returning dynamically allocated memory from a function.auto_ptr
does not meet the CopyConstructible and Assignable requirements for Standard Library container elements and thus instantiating a Standard Library container with anauto_ptr
results in undefined behavior.
Good examples of what can and cannot be done with auto_ptr can be found in the libstdc++ testsuite.
Definition at line 174 of file memory.
typedef _Tp std::auto_ptr< _Tp >::element_type |
std::auto_ptr< _Tp >::auto_ptr | ( | element_type * | __p = 0 |
) | throw () [inline, explicit] |
std::auto_ptr< _Tp >::auto_ptr | ( | auto_ptr< _Tp > & | __a | ) | throw () [inline] |
std::auto_ptr< _Tp >::auto_ptr | ( | auto_ptr< _Tp1 > & | __a | ) | throw () [inline] |
An auto_ptr can be constructed from another auto_ptr.
a | Another auto_ptr of a different but related type. |
This object now owns the object previously owned by a, which has given up ownsership.
std::auto_ptr< _Tp >::~auto_ptr | ( | ) | [inline] |
std::auto_ptr< _Tp >::auto_ptr | ( | auto_ptr_ref< element_type > | __ref | ) | throw () [inline] |
Automatic conversions.
These operations convert an auto_ptr into and from an auto_ptr_ref automatically as needed. This allows constructs such as
auto_ptr<Derived> func_returning_auto_ptr(.....); ... auto_ptr<Base> ptr = func_returning_auto_ptr(.....);
element_type* std::auto_ptr< _Tp >::get | ( | void | ) | const throw () [inline] |
element_type& std::auto_ptr< _Tp >::operator* | ( | ) | const throw () [inline] |
element_type* std::auto_ptr< _Tp >::operator-> | ( | ) | const throw () [inline] |
auto_ptr& std::auto_ptr< _Tp >::operator= | ( | auto_ptr< _Tp1 > & | __a | ) | throw () [inline] |
auto_ptr assignment operator.
a | Another auto_ptr of a different but related type. |
This object now owns the object previously owned by a, which has given up ownsership. The object that this one used to own and track has been deleted.
auto_ptr& std::auto_ptr< _Tp >::operator= | ( | auto_ptr< _Tp > & | __a | ) | throw () [inline] |
element_type* std::auto_ptr< _Tp >::release | ( | ) | throw () [inline] |
Bypassing the smart pointer.
void std::auto_ptr< _Tp >::reset | ( | element_type * | __p = 0 |
) | throw () [inline] |