std::auto_ptr(3)

NAME
std::auto_ptr -

SYNOPSIS

Detailed Description

  template<typename _Tp> class std::auto_ptr< _Tp >
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.

  Public Types
typedef _Tp element_type

  Public Member Functions
auto_ptr (auto_ptr_ref< element_type > __ref) throw ()
template<typename _Tp1> auto_ptr (auto_ptr< _Tp1 > &__a) throw ()
auto_ptr (auto_ptr &__a) throw ()
auto_ptr (element_type *__p=0) throw ()
element_type * get () const throw ()
element_type & operator * () const throw ()
template<typename _Tp1> operator auto_ptr () throw ()
template<typename _Tp1> operator auto_ptr_ref () throw ()
element_type * operator-> () const throw ()
auto_ptr & operator= (auto_ptr_ref< element_type > __ref) throw ()
template<typename _Tp1> auto_ptr & operator= (auto_ptr< _Tp1 > &__a) throw ()
auto_ptr & operator= (auto_ptr &__a) throw ()
element_type * release () throw ()
void reset (element_type *__p=0) throw ()
~auto_ptr ()

Member Typedef Documentation

  typedef _Tp element_type

The pointed-to type.

Definition at line 182 of file memory.

Constructor & Destructor Documentation

  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.

  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.

  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.

  ~auto_ptr () [inline]

When the auto_ptr goes out of scope, the object it owns is deleted. If it no longer owns anything (i.e., get() is NULL), then this has no effect.

Definition at line 260 of file memory.

  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(.....);

Definition at line 350 of file memory.

Member Function Documentation

  element_type* get (void) const throw () [inline]

Bypassing the smart pointer.

Returns:
    The raw pointer being managed.

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.

Note:
    This auto_ptr still owns the memory.

Definition at line 301 of file memory.

Referenced by shared_ptr::shared_ptr().

  element_type& operator * () const throw () [inline]

Smart pointer dereferencing.

If this auto_ptr no longer owns anything, then this operation will crash. (For a smart pointer, 'no longer owns anything' is the same as being a null pointer, and you know what happens when you dereference one of those...)

Definition at line 271 of file memory.

  element_type* operator-> () const throw () [inline]

Smart pointer dereferencing.

This returns the pointer itself, which the language then will automatically cause to be dereferenced.

Definition at line 284 of file memory.

  auto_ptr& 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.

References auto_ptr::release(), and auto_ptr::reset().

  auto_ptr& 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.

References auto_ptr::release(), and auto_ptr::reset().

  element_type* release () throw () [inline]

Bypassing the smart pointer.

Returns:
    The raw pointer being managed.

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.

Note:
    This auto_ptr no longer owns the memory. When this object goes out of scope, nothing will happen.

Definition at line 315 of file memory.

Referenced by auto_ptr::operator auto_ptr(), auto_ptr::operator auto_ptr_ref(), auto_ptr::operator=(), and shared_count::shared_count().

  void reset (element_type * __p = 0) throw () [inline]

Forcibly deletes the managed object.

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

Referenced by auto_ptr::operator=().

Author

Generated automatically by Doxygen for libstdc++ from the source code.