A simple smart pointer providing strict ownership semantics. More...
The Standard says:
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 ofauto_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.
Quoted from [20.4.5]/3.
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 element_type |
auto_ptr | ( | element_type * | __p = 0 |
) | throw () [inline, explicit] |
An auto_ptr can be constructed from another auto_ptr.
a | Another auto_ptr of a different but related type. |
A pointer-to-Tp1 must be convertible to a pointer-to-Tp/element_type.
This object now owns the object previously owned by a, which has given up ownsership.
~auto_ptr | ( | ) | [inline] |
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* get | ( | void | ) | const throw () [inline] |
Bypassing the smart pointer.
You can get a copy of the pointer that this object owns, for situations such as passing to a function which only accepts a raw pointer.
Definition at line 300 of file memory.
Referenced by shared_ptr< _Tp >::shared_ptr().
element_type& operator* | ( | ) | const throw () [inline] |
element_type* operator-> | ( | ) | const throw () [inline] |
auto_ptr assignment operator.
a | Another auto_ptr of a different but related type. |
A pointer-to-Tp1 must be convertible to a pointer-to-Tp/element_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.
Definition at line 241 of file memory.
References auto_ptr< _Tp >::reset().
auto_ptr assignment operator.
a | Another auto_ptr of the same 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.
Definition at line 223 of file memory.
References auto_ptr< _Tp >::reset().
element_type* release | ( | ) | throw () [inline] |
Bypassing the smart pointer.
You can get a copy of the pointer that this object owns, for situations such as passing to a function which only accepts a raw pointer.
void reset | ( | element_type * | __p = 0 |
) | throw () [inline] |
Forcibly deletes the managed object.
p | A pointer (defaults to NULL). |
This object now owns the object pointed to by p. The previous object has been deleted.
Definition at line 329 of file memory.
Referenced by auto_ptr< _Tp >::operator=().