std::auto_ptr< _Tp > Class Template Reference

A simple smart pointer providing strict ownership semantics. More...

List of all members.

Public Types

typedef _Tp element_type
 The pointed-to type.


Public Member Functions

 auto_ptr (element_type *__p=0) throw ()
 An auto_ptr is usually constructed from a raw pointer.

 auto_ptr (auto_ptr &__a) throw ()
 An auto_ptr can be constructed from another auto_ptr.

template<typename _Tp1>  auto_ptr (auto_ptr< _Tp1 > &__a) throw ()
 An auto_ptr can be constructed from another auto_ptr.

auto_ptroperator= (auto_ptr &__a) throw ()
 auto_ptr assignment operator.

template<typename _Tp1> auto_ptroperator= (auto_ptr< _Tp1 > &__a) throw ()
 auto_ptr assignment operator.


Private Attributes

_Tp * _M_ptr


Detailed Description

template<typename _Tp>
class std::auto_ptr< _Tp >

A simple smart pointer providing strict ownership semantics.

The Standard says:

An auto_ptr owns the object it holds a pointer to. Copying an auto_ptr copies the pointer and transfers ownership to the destination. If more than one auto_ptr owns the same object at the same time the behavior of the program is undefined.

The uses of 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 an auto_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 175 of file memory.


Member Typedef Documentation

template<typename _Tp>
typedef _Tp std::auto_ptr< _Tp >::element_type
 

The pointed-to type.

Definition at line 182 of file memory.

Referenced by std::auto_ptr< _Tp >::auto_ptr().


Constructor & Destructor Documentation

template<typename _Tp>
std::auto_ptr< _Tp >::auto_ptr element_type __p = 0  )  throw () [inline, explicit]
 

An auto_ptr is usually constructed from a raw pointer.

Parameters:
p A pointer (defaults to NULL).
This object now owns the object pointed to by p.

Definition at line 191 of file memory.

References std::auto_ptr< _Tp >::element_type.

template<typename _Tp>
std::auto_ptr< _Tp >::auto_ptr auto_ptr< _Tp > &  __a  )  throw () [inline]
 

An auto_ptr can be constructed from another auto_ptr.

Parameters:
a Another auto_ptr of the same type.
This object now owns the object previously owned by a, which has given up ownsership.

Definition at line 200 of file memory.

template<typename _Tp>
template<typename _Tp1>
std::auto_ptr< _Tp >::auto_ptr auto_ptr< _Tp1 > &  __a  )  throw () [inline]
 

An auto_ptr can be constructed from another auto_ptr.

Parameters:
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.

Definition at line 213 of file memory.


Member Function Documentation

template<typename _Tp>
template<typename _Tp1>
auto_ptr& std::auto_ptr< _Tp >::operator= auto_ptr< _Tp1 > &  __a  )  throw () [inline]
 

auto_ptr assignment operator.

Parameters:
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 242 of file memory.

template<typename _Tp>
auto_ptr& std::auto_ptr< _Tp >::operator= auto_ptr< _Tp > &  __a  )  throw () [inline]
 

auto_ptr assignment operator.

Parameters:
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 224 of file memory.


Member Data Documentation

template<typename _Tp>
_Tp* std::auto_ptr< _Tp >::_M_ptr [private]
 

Definition at line 178 of file memory.


The documentation for this class was generated from the following file:
Generated on Tue Jan 30 17:32:18 2007 for GNU C++ STL by doxygen 1.3.6