libstdc++
Pointer Abstractions
Collaboration diagram for Pointer Abstractions:

Classes

struct  std::default_delete< _Tp >
 Primary template, default_delete. More...
struct  std::default_delete< _Tp[]>
 Specialization, default_delete. More...
class  std::enable_shared_from_this< _Tp >
 Base class allowing use of member function shared_from_this. More...
struct  std::hash< shared_ptr< _Tp > >
 std::hash specialization for shared_ptr. More...
struct  std::hash< unique_ptr< _Tp, _Dp > >
 std::hash specialization for unique_ptr. More...
struct  std::owner_less< shared_ptr< _Tp > >
 Partial specialization of owner_less for shared_ptr. More...
struct  std::owner_less< weak_ptr< _Tp > >
 Partial specialization of owner_less for weak_ptr. More...
struct  std::pointer_traits< _Ptr >
 Uniform interface to all pointer-like types. More...
struct  std::pointer_traits< _Tp * >
 Partial specialization for built-in pointers. More...
class  std::shared_ptr< _Tp >
 A smart pointer with reference-counted copy semantics. More...
class  std::unique_ptr< _Tp, _Dp >
 20.7.12.2 unique_ptr for single objects. More...
class  std::unique_ptr< _Tp[], _Dp >
 20.7.12.3 unique_ptr for array objects with a runtime length More...
class  std::weak_ptr< _Tp >
 A smart pointer with weak semantics. More...

Functions

template<typename _Tp , typename _Alloc , typename... _Args>
shared_ptr< _Tp > std::allocate_shared (const _Alloc &__a, _Args &&...__args)
template<typename _Tp , typename _Tp1 >
shared_ptr< _Tp > std::const_pointer_cast (const shared_ptr< _Tp1 > &__r) noexcept
template<typename _Tp , typename _Tp1 >
shared_ptr< _Tp > std::dynamic_pointer_cast (const shared_ptr< _Tp1 > &__r) noexcept
template<typename _Del , typename _Tp , _Lock_policy _Lp>
_Del * std::get_deleter (const __shared_ptr< _Tp, _Lp > &__p) noexcept
template<typename _Tp , typename... _Args>
shared_ptr< _Tp > std::make_shared (_Args &&...__args)
template<typename _Tp1 , typename _Tp2 >
bool std::operator!= (const shared_ptr< _Tp1 > &__a, const shared_ptr< _Tp2 > &__b) noexcept
template<typename _Tp >
bool std::operator!= (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp >
bool std::operator!= (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
bool std::operator!= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp , typename _Dp >
bool std::operator!= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t) noexcept
template<typename _Tp , typename _Dp >
bool std::operator!= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x) noexcept
template<typename _Tp1 , typename _Tp2 >
bool std::operator< (const shared_ptr< _Tp1 > &__a, const shared_ptr< _Tp2 > &__b) noexcept
template<typename _Tp >
bool std::operator< (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp >
bool std::operator< (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
bool std::operator< (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp , typename _Dp >
bool std::operator< (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp , typename _Dp >
bool std::operator< (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Ch , typename _Tr , typename _Tp , _Lock_policy _Lp>
std::basic_ostream< _Ch, _Tr > & std::operator<< (std::basic_ostream< _Ch, _Tr > &__os, const __shared_ptr< _Tp, _Lp > &__p)
template<typename _Tp1 , typename _Tp2 >
bool std::operator<= (const shared_ptr< _Tp1 > &__a, const shared_ptr< _Tp2 > &__b) noexcept
template<typename _Tp >
bool std::operator<= (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp >
bool std::operator<= (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
bool std::operator<= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp , typename _Dp >
bool std::operator<= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp , typename _Dp >
bool std::operator<= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp1 , typename _Tp2 >
bool std::operator== (const shared_ptr< _Tp1 > &__a, const shared_ptr< _Tp2 > &__b) noexcept
template<typename _Tp >
bool std::operator== (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp >
bool std::operator== (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
bool std::operator== (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp , typename _Dp >
bool std::operator== (const unique_ptr< _Tp, _Dp > &__x, nullptr_t) noexcept
template<typename _Tp , typename _Dp >
bool std::operator== (nullptr_t, const unique_ptr< _Tp, _Dp > &__x) noexcept
template<typename _Tp1 , typename _Tp2 >
bool std::operator> (const shared_ptr< _Tp1 > &__a, const shared_ptr< _Tp2 > &__b) noexcept
template<typename _Tp >
bool std::operator> (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp >
bool std::operator> (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
bool std::operator> (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp , typename _Dp >
bool std::operator> (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp , typename _Dp >
bool std::operator> (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp1 , typename _Tp2 >
bool std::operator>= (const shared_ptr< _Tp1 > &__a, const shared_ptr< _Tp2 > &__b) noexcept
template<typename _Tp >
bool std::operator>= (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp >
bool std::operator>= (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
bool std::operator>= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp , typename _Dp >
bool std::operator>= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp , typename _Dp >
bool std::operator>= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp , typename _Tp1 >
shared_ptr< _Tp > std::static_pointer_cast (const shared_ptr< _Tp1 > &__r) noexcept
template<typename _Tp >
void std::swap (shared_ptr< _Tp > &__a, shared_ptr< _Tp > &__b) noexcept
template<typename _Tp , typename _Dp >
void std::swap (unique_ptr< _Tp, _Dp > &__x, unique_ptr< _Tp, _Dp > &__y) noexcept
template<typename _Tp >
void std::swap (weak_ptr< _Tp > &__a, weak_ptr< _Tp > &__b) noexcept

Detailed Description

Smart pointers, etc.


Function Documentation

template<typename _Tp , typename _Alloc , typename... _Args>
shared_ptr<_Tp> std::allocate_shared ( const _Alloc &  __a,
_Args &&...  __args 
)
inline

Create an object that is owned by a shared_ptr.

Parameters:
__aAn allocator.
__argsArguments for the _Tp object's constructor.
Returns:
A shared_ptr that owns the newly created object.
Exceptions:
Anexception thrown from _Alloc::allocate or from the constructor of _Tp.

A copy of __a will be used to allocate memory for the shared_ptr and the new object.

Definition at line 596 of file shared_ptr.h.

template<typename _Del , typename _Tp , _Lock_policy _Lp>
_Del* std::get_deleter ( const __shared_ptr< _Tp, _Lp > &  __p)
inline

2.2.3.10 shared_ptr get_deleter (experimental)

Definition at line 76 of file shared_ptr.h.

template<typename _Tp , typename... _Args>
shared_ptr<_Tp> std::make_shared ( _Args &&...  __args)
inline

Create an object that is owned by a shared_ptr.

Parameters:
__argsArguments for the _Tp object's constructor.
Returns:
A shared_ptr that owns the newly created object.
Exceptions:
std::bad_alloc,oran exception thrown from the constructor of _Tp.

Definition at line 611 of file shared_ptr.h.

template<typename _Ch , typename _Tr , typename _Tp , _Lock_policy _Lp>
std::basic_ostream<_Ch, _Tr>& std::operator<< ( std::basic_ostream< _Ch, _Tr > &  __os,
const __shared_ptr< _Tp, _Lp > &  __p 
)
inline

2.2.3.7 shared_ptr I/O

Definition at line 66 of file shared_ptr.h.