std::tr1::shared_ptr< _Tp > Class Template Reference

#include <boost_shared_ptr.h>

List of all members.

Public Types

typedef _Tp element_type

Public Member Functions

 shared_ptr ()
 Construct an empty shared_ptr.
template<typename _Tp1>
 shared_ptr (_Tp1 *__p)
 Construct a shared_ptr that owns the pointer p.
template<typename _Tp1, typename _Deleter>
 shared_ptr (_Tp1 *__p, _Deleter __d)
 Construct a shared_ptr that owns the pointer p and the deleter d.
template<typename _Tp1>
 shared_ptr (const shared_ptr< _Tp1 > &__r)
 If r is empty, constructs an empty shared_ptr; otherwise construct a shared_ptr that shares ownership with r.
template<typename _Tp1>
 shared_ptr (const weak_ptr< _Tp1 > &__r)
 Constructs a shared_ptr that shares ownership with r and stores a copy of the pointer stored in r.
template<typename _Tp1>
 shared_ptr (std::auto_ptr< _Tp1 > &__r)
template<typename _Tp1>
 shared_ptr (const shared_ptr< _Tp1 > &__r, __static_cast_tag)
template<typename _Tp1>
 shared_ptr (const shared_ptr< _Tp1 > &__r, __const_cast_tag)
template<typename _Tp1>
 shared_ptr (const shared_ptr< _Tp1 > &__r, __dynamic_cast_tag)
template<typename _Tp1>
shared_ptroperator= (const shared_ptr< _Tp1 > &__r)
template<typename _Tp1>
shared_ptroperator= (std::auto_ptr< _Tp1 > &__r)
void reset ()
template<typename _Tp1>
void reset (_Tp1 *__p)
template<typename _Tp1, typename _Deleter>
void reset (_Tp1 *__p, _Deleter __d)
_Reference operator * () const
_Tp * operator-> () const
_Tp * get () const
 operator __unspecified_bool_type () const
bool unique () const
long use_count () const
void swap (shared_ptr< _Tp > &__other)

Private Types

typedef shared_ptr_traits<
_Tp >::reference 
_Reference
typedef _Tp *shared_ptr::* __unspecified_bool_type

Private Member Functions

void * _M_get_deleter (const std::type_info &__ti) const
template<typename _Tp1>
bool _M_less (const shared_ptr< _Tp1 > &__rhs) const

Private Attributes

_Tp * _M_ptr
shared_count _M_refcount

Friends

class shared_ptr
class weak_ptr
template<typename _Del, typename _Tp1>
_Del * get_deleter (const shared_ptr< _Tp1 > &)
template<typename _Tp1>
bool operator== (const shared_ptr &__a, const shared_ptr< _Tp1 > &__b)
template<typename _Tp1>
bool operator!= (const shared_ptr &__a, const shared_ptr< _Tp1 > &__b)
template<typename _Tp1>
bool operator< (const shared_ptr &__a, const shared_ptr< _Tp1 > &__b)


Detailed Description

template<typename _Tp>
class std::tr1::shared_ptr< _Tp >

A smart pointer with reference-counted copy semantics. The object pointed to is deleted when the last shared_ptr pointing to it is destroyed or reset.

Definition at line 485 of file boost_shared_ptr.h.


Member Typedef Documentation

template<typename _Tp>
typedef _Tp* shared_ptr::* std::tr1::shared_ptr< _Tp >::__unspecified_bool_type [private]

Definition at line 661 of file boost_shared_ptr.h.

template<typename _Tp>
typedef shared_ptr_traits<_Tp>::reference std::tr1::shared_ptr< _Tp >::_Reference [private]

Definition at line 487 of file boost_shared_ptr.h.

template<typename _Tp>
typedef _Tp std::tr1::shared_ptr< _Tp >::element_type

Definition at line 491 of file boost_shared_ptr.h.


Constructor & Destructor Documentation

template<typename _Tp>
std::tr1::shared_ptr< _Tp >::shared_ptr (  )  [inline]

Construct an empty shared_ptr.

Postcondition:
use_count()==0 && get()==0

Definition at line 496 of file boost_shared_ptr.h.

Referenced by std::tr1::shared_ptr< _Tp >::operator=(), and std::tr1::shared_ptr< _Tp >::reset().

template<typename _Tp>
template<typename _Tp1>
std::tr1::shared_ptr< _Tp >::shared_ptr ( _Tp1 *  __p  )  [inline, explicit]

Construct a shared_ptr that owns the pointer p.

Parameters:
p A pointer that is convertible to element_type*.
Postcondition:
use_count() == 1 && get() == p
Exceptions:
std::bad_alloc,in which case delete p is called.

Definition at line 506 of file boost_shared_ptr.h.

References std::tr1::__enable_shared_from_this(), __glibcxx_function_requires, and std::tr1::shared_ptr< _Tp >::_M_refcount.

template<typename _Tp>
template<typename _Tp1, typename _Deleter>
std::tr1::shared_ptr< _Tp >::shared_ptr ( _Tp1 *  __p,
_Deleter  __d 
) [inline]

Construct a shared_ptr that owns the pointer p and the deleter d.

Parameters:
p A pointer.
d A deleter.
Postcondition:
use_count() == 1 && get() == p
Exceptions:
std::bad_alloc,in which case d(p) is called.

Definition at line 528 of file boost_shared_ptr.h.

References std::tr1::__enable_shared_from_this(), __glibcxx_function_requires, and std::tr1::shared_ptr< _Tp >::_M_refcount.

template<typename _Tp>
template<typename _Tp1>
std::tr1::shared_ptr< _Tp >::shared_ptr ( const shared_ptr< _Tp1 > &  __r  )  [inline]

If r is empty, constructs an empty shared_ptr; otherwise construct a shared_ptr that shares ownership with r.

Parameters:
r A shared_ptr.
Postcondition:
get() == r.get() && use_count() == r.use_count()
Exceptions:
std::bad_alloc,in which case

Definition at line 546 of file boost_shared_ptr.h.

References __glibcxx_function_requires.

template<typename _Tp>
template<typename _Tp1>
std::tr1::shared_ptr< _Tp >::shared_ptr ( const weak_ptr< _Tp1 > &  __r  )  [inline, explicit]

Constructs a shared_ptr that shares ownership with r and stores a copy of the pointer stored in r.

Parameters:
r A weak_ptr.
Postcondition:
use_count() == r.use_count()
Exceptions:
bad_weak_ptr when r.expired(), in which case the constructor has no effect.

Definition at line 560 of file boost_shared_ptr.h.

References __glibcxx_function_requires, std::tr1::weak_ptr< _Tp >::_M_ptr, and std::tr1::shared_ptr< _Tp >::_M_ptr.

template<typename _Tp>
template<typename _Tp1>
std::tr1::shared_ptr< _Tp >::shared_ptr ( std::auto_ptr< _Tp1 > &  __r  )  [inline, explicit]

Postcondition:
use_count() == 1 and r.get() == 0

Definition at line 573 of file boost_shared_ptr.h.

References std::tr1::__enable_shared_from_this(), std::tr1::shared_ptr< _Tp >::_M_refcount, and std::auto_ptr< _Tp >::get().

template<typename _Tp>
template<typename _Tp1>
std::tr1::shared_ptr< _Tp >::shared_ptr ( const shared_ptr< _Tp1 > &  __r,
__static_cast_tag   
) [inline]

Definition at line 585 of file boost_shared_ptr.h.

template<typename _Tp>
template<typename _Tp1>
std::tr1::shared_ptr< _Tp >::shared_ptr ( const shared_ptr< _Tp1 > &  __r,
__const_cast_tag   
) [inline]

Definition at line 591 of file boost_shared_ptr.h.

template<typename _Tp>
template<typename _Tp1>
std::tr1::shared_ptr< _Tp >::shared_ptr ( const shared_ptr< _Tp1 > &  __r,
__dynamic_cast_tag   
) [inline]

Definition at line 597 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_ptr, and std::tr1::shared_ptr< _Tp >::_M_refcount.


Member Function Documentation

template<typename _Tp>
void* std::tr1::shared_ptr< _Tp >::_M_get_deleter ( const std::type_info __ti  )  const [inline, private]

Definition at line 684 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_refcount, and std::tr1::shared_count::get_deleter().

Referenced by std::tr1::get_deleter().

template<typename _Tp>
template<typename _Tp1>
bool std::tr1::shared_ptr< _Tp >::_M_less ( const shared_ptr< _Tp1 > &  __rhs  )  const [inline, private]

Definition at line 689 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_refcount.

template<typename _Tp>
_Tp* std::tr1::shared_ptr< _Tp >::get ( void   )  const [inline]

Definition at line 656 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_ptr.

template<typename _Tp>
_Reference std::tr1::shared_ptr< _Tp >::operator * (  )  const [inline]

Definition at line 642 of file boost_shared_ptr.h.

References _GLIBCXX_DEBUG_ASSERT, and std::tr1::shared_ptr< _Tp >::_M_ptr.

template<typename _Tp>
std::tr1::shared_ptr< _Tp >::operator __unspecified_bool_type (  )  const [inline]

Definition at line 664 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_ptr.

template<typename _Tp>
_Tp* std::tr1::shared_ptr< _Tp >::operator-> (  )  const [inline]

Definition at line 649 of file boost_shared_ptr.h.

References _GLIBCXX_DEBUG_ASSERT, and std::tr1::shared_ptr< _Tp >::_M_ptr.

template<typename _Tp>
template<typename _Tp1>
shared_ptr& std::tr1::shared_ptr< _Tp >::operator= ( std::auto_ptr< _Tp1 > &  __r  )  [inline]

Definition at line 616 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::shared_ptr().

template<typename _Tp>
template<typename _Tp1>
shared_ptr& std::tr1::shared_ptr< _Tp >::operator= ( const shared_ptr< _Tp1 > &  __r  )  [inline]

Definition at line 607 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_ptr, and std::tr1::shared_ptr< _Tp >::_M_refcount.

template<typename _Tp>
template<typename _Tp1, typename _Deleter>
void std::tr1::shared_ptr< _Tp >::reset ( _Tp1 *  __p,
_Deleter  __d 
) [inline]

Definition at line 637 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::shared_ptr().

template<typename _Tp>
template<typename _Tp1>
void std::tr1::shared_ptr< _Tp >::reset ( _Tp1 *  __p  )  [inline]

Definition at line 628 of file boost_shared_ptr.h.

References _GLIBCXX_DEBUG_ASSERT, std::tr1::shared_ptr< _Tp >::_M_ptr, and std::tr1::shared_ptr< _Tp >::shared_ptr().

template<typename _Tp>
void std::tr1::shared_ptr< _Tp >::reset (  )  [inline]

Definition at line 623 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::shared_ptr().

template<typename _Tp>
void std::tr1::shared_ptr< _Tp >::swap ( shared_ptr< _Tp > &  __other  )  [inline]

Definition at line 676 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_ptr, std::tr1::shared_ptr< _Tp >::_M_refcount, std::tr1::shared_count::swap(), and std::swap().

Referenced by std::tr1::swap().

template<typename _Tp>
bool std::tr1::shared_ptr< _Tp >::unique (  )  const [inline]

Definition at line 668 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_refcount, and std::tr1::shared_count::unique().

template<typename _Tp>
long std::tr1::shared_ptr< _Tp >::use_count (  )  const [inline]

Definition at line 672 of file boost_shared_ptr.h.

References std::tr1::shared_ptr< _Tp >::_M_refcount, and std::tr1::shared_count::use_count().


Friends And Related Function Documentation

template<typename _Tp>
template<typename _Del, typename _Tp1>
_Del* get_deleter ( const shared_ptr< _Tp1 > &   )  [friend]

template<typename _Tp>
template<typename _Tp1>
bool operator!= ( const shared_ptr< _Tp > &  __a,
const shared_ptr< _Tp1 > &  __b 
) [friend]

Definition at line 706 of file boost_shared_ptr.h.

template<typename _Tp>
template<typename _Tp1>
bool operator< ( const shared_ptr< _Tp > &  __a,
const shared_ptr< _Tp1 > &  __b 
) [friend]

Definition at line 711 of file boost_shared_ptr.h.

template<typename _Tp>
template<typename _Tp1>
bool operator== ( const shared_ptr< _Tp > &  __a,
const shared_ptr< _Tp1 > &  __b 
) [friend]

Definition at line 701 of file boost_shared_ptr.h.

template<typename _Tp>
friend class shared_ptr [friend]

Definition at line 692 of file boost_shared_ptr.h.

template<typename _Tp>
friend class weak_ptr [friend]

Definition at line 693 of file boost_shared_ptr.h.


Member Data Documentation

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

Definition at line 714 of file boost_shared_ptr.h.

Referenced by std::tr1::shared_ptr< _Tp >::get(), std::tr1::shared_ptr< _Tp >::operator *(), std::tr1::shared_ptr< _Tp >::operator __unspecified_bool_type(), std::tr1::shared_ptr< _Tp >::operator->(), std::tr1::weak_ptr< _Tp >::operator=(), std::tr1::shared_ptr< _Tp >::operator=(), std::tr1::shared_ptr< _Tp >::reset(), std::tr1::shared_ptr< _Tp >::shared_ptr(), and std::tr1::shared_ptr< _Tp >::swap().

template<typename _Tp>
shared_count std::tr1::shared_ptr< _Tp >::_M_refcount [private]

Definition at line 715 of file boost_shared_ptr.h.

Referenced by std::tr1::shared_ptr< _Tp >::_M_get_deleter(), std::tr1::shared_ptr< _Tp >::_M_less(), std::tr1::weak_ptr< _Tp >::operator=(), std::tr1::shared_ptr< _Tp >::operator=(), std::tr1::shared_ptr< _Tp >::shared_ptr(), std::tr1::shared_ptr< _Tp >::swap(), std::tr1::shared_ptr< _Tp >::unique(), and std::tr1::shared_ptr< _Tp >::use_count().


The documentation for this class was generated from the following file:
Generated on Tue Feb 2 16:59:36 2010 for GNU C++ STL by  doxygen 1.4.7