libstdc++
Pointer Abstractions
Collaboration diagram for Pointer Abstractions:

Classes

struct  std::default_delete< _Tp >
struct  std::default_delete< _Tp[]>
class  std::enable_shared_from_this< _Tp >
struct  std::hash< shared_ptr< _Tp > >
struct  std::hash< unique_ptr< _Tp, _Dp > >
struct  std::owner_less< _Tp >
struct  std::owner_less< shared_ptr< _Tp > >
struct  std::owner_less< void >
struct  std::owner_less< weak_ptr< _Tp > >
struct  std::pointer_traits< _Ptr >
struct  std::pointer_traits< _Tp * >
class  std::shared_ptr< _Tp >
class  std::unique_ptr< _Tp, _Dp >
class  std::unique_ptr< _Tp[], _Dp >
class  std::weak_ptr< _Tp >

Functions

template<typename _Del, typename _Tp, _Lock_policy _Lp>
_Del * std::get_deleter (const __shared_ptr< _Tp, _Lp > &__p) noexcept
template<typename _Del, typename _Tp>
_Del * get_deleter (const shared_ptr< _Tp > &__p) noexcept
template<typename _Ch, typename _Tr, typename _Tp, _Lock_policy _Lp>
std::basic_ostream< _Ch, _Tr > & operator<< (std::basic_ostream< _Ch, _Tr > &__os, const __shared_ptr< _Tp, _Lp > &__p)
template<typename _Tp>
void swap (weak_ptr< _Tp > &__a, weak_ptr< _Tp > &__b) noexcept
template<typename _Tp>
shared_ptr< _Tp > std::atomic_load_explicit (const shared_ptr< _Tp > *__p, memory_order)
template<typename _Tp>
shared_ptr< _Tp > std::atomic_load (const shared_ptr< _Tp > *__p)
template<typename _Tp, _Lock_policy _Lp>
__shared_ptr< _Tp, _Lp > std::atomic_load_explicit (const __shared_ptr< _Tp, _Lp > *__p, memory_order)
template<typename _Tp, _Lock_policy _Lp>
__shared_ptr< _Tp, _Lp > std::atomic_load (const __shared_ptr< _Tp, _Lp > *__p)
template<typename _Tp>
void std::atomic_store_explicit (shared_ptr< _Tp > *__p, shared_ptr< _Tp > __r, memory_order)
template<typename _Tp>
void std::atomic_store (shared_ptr< _Tp > *__p, shared_ptr< _Tp > __r)
template<typename _Tp, _Lock_policy _Lp>
void std::atomic_store_explicit (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > __r, memory_order)
template<typename _Tp, _Lock_policy _Lp>
void std::atomic_store (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > __r)
template<typename _Tp>
shared_ptr< _Tp > std::atomic_exchange_explicit (shared_ptr< _Tp > *__p, shared_ptr< _Tp > __r, memory_order)
template<typename _Tp>
shared_ptr< _Tp > std::atomic_exchange (shared_ptr< _Tp > *__p, shared_ptr< _Tp > __r)
template<typename _Tp, _Lock_policy _Lp>
__shared_ptr< _Tp, _Lp > std::atomic_exchange_explicit (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > __r, memory_order)
template<typename _Tp, _Lock_policy _Lp>
__shared_ptr< _Tp, _Lp > std::atomic_exchange (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > __r)
template<typename _Tp>
bool std::atomic_compare_exchange_strong_explicit (shared_ptr< _Tp > *__p, shared_ptr< _Tp > *__v, shared_ptr< _Tp > __w, memory_order, memory_order)
template<typename _Tp>
bool std::atomic_compare_exchange_strong (shared_ptr< _Tp > *__p, shared_ptr< _Tp > *__v, shared_ptr< _Tp > __w)
template<typename _Tp>
bool std::atomic_compare_exchange_weak_explicit (shared_ptr< _Tp > *__p, shared_ptr< _Tp > *__v, shared_ptr< _Tp > __w, memory_order __success, memory_order __failure)
template<typename _Tp>
bool std::atomic_compare_exchange_weak (shared_ptr< _Tp > *__p, shared_ptr< _Tp > *__v, shared_ptr< _Tp > __w)
template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_strong_explicit (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > *__v, __shared_ptr< _Tp, _Lp > __w, memory_order, memory_order)
template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_strong (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > *__v, __shared_ptr< _Tp, _Lp > __w)
template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_weak_explicit (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > *__v, __shared_ptr< _Tp, _Lp > __w, memory_order __success, memory_order __failure)
template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_weak (__shared_ptr< _Tp, _Lp > *__p, __shared_ptr< _Tp, _Lp > *__v, __shared_ptr< _Tp, _Lp > __w)
template<typename _Tp, typename _Up>
bool operator== (const shared_ptr< _Tp > &__a, const shared_ptr< _Up > &__b) noexcept
template<typename _Tp>
bool operator== (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp>
bool operator== (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp, typename _Up>
bool operator!= (const shared_ptr< _Tp > &__a, const shared_ptr< _Up > &__b) noexcept
template<typename _Tp>
bool operator!= (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp>
bool operator!= (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp, typename _Up>
bool operator< (const shared_ptr< _Tp > &__a, const shared_ptr< _Up > &__b) noexcept
template<typename _Tp>
bool operator< (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp>
bool operator< (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp, typename _Up>
bool operator<= (const shared_ptr< _Tp > &__a, const shared_ptr< _Up > &__b) noexcept
template<typename _Tp>
bool operator<= (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp>
bool operator<= (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp, typename _Up>
bool operator> (const shared_ptr< _Tp > &__a, const shared_ptr< _Up > &__b) noexcept
template<typename _Tp>
bool operator> (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp>
bool operator> (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp, typename _Up>
bool operator>= (const shared_ptr< _Tp > &__a, const shared_ptr< _Up > &__b) noexcept
template<typename _Tp>
bool operator>= (const shared_ptr< _Tp > &__a, nullptr_t) noexcept
template<typename _Tp>
bool operator>= (nullptr_t, const shared_ptr< _Tp > &__a) noexcept
template<typename _Tp>
void swap (shared_ptr< _Tp > &__a, shared_ptr< _Tp > &__b) noexcept
template<typename _Tp, typename _Up>
shared_ptr< _Tp > static_pointer_cast (const shared_ptr< _Up > &__r) noexcept
template<typename _Tp, typename _Up>
shared_ptr< _Tp > const_pointer_cast (const shared_ptr< _Up > &__r) noexcept
template<typename _Tp, typename _Up>
shared_ptr< _Tp > dynamic_pointer_cast (const shared_ptr< _Up > &__r) noexcept
template<typename _Tp, typename _Up>
shared_ptr< _Tp > reinterpret_pointer_cast (const shared_ptr< _Up > &__r) noexcept
template<typename _Tp, typename _Alloc, typename... _Args>
shared_ptr< _Tp > allocate_shared (const _Alloc &__a, _Args &&... __args)
template<typename _Tp, typename... _Args>
shared_ptr< _Tp > make_shared (_Args &&... __args)
template<typename _Tp, _Lock_policy _Lp>
bool atomic_is_lock_free (const __shared_ptr< _Tp, _Lp > *__p)
template<typename _Tp, typename _Dp>
enable_if< __is_swappable< _Dp >::value >::type swap (unique_ptr< _Tp, _Dp > &__x, unique_ptr< _Tp, _Dp > &__y) noexcept
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator== (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
bool operator== (const unique_ptr< _Tp, _Dp > &__x, nullptr_t) noexcept
template<typename _Tp, typename _Dp>
bool operator== (nullptr_t, const unique_ptr< _Tp, _Dp > &__x) noexcept
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator!= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
bool operator!= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t) noexcept
template<typename _Tp, typename _Dp>
bool operator!= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x) noexcept
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator< (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
bool operator< (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp, typename _Dp>
bool operator< (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator<= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
bool operator<= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp, typename _Dp>
bool operator<= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator> (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
bool operator> (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp, typename _Dp>
bool operator> (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator>= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
bool operator>= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp, typename _Dp>
bool operator>= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp, typename... _Args>
_MakeUniq< _Tp >::__single_object make_unique (_Args &&... __args)
template<typename _Tp>
_MakeUniq< _Tp >::__array make_unique (size_t __num)
template<typename _Tp, typename... _Args>
_MakeUniq< _Tp >::__invalid_type make_unique (_Args &&...)=delete
#define __cpp_lib_make_unique

Detailed Description

Smart pointers, etc.

Macro Definition Documentation

◆ __cpp_lib_make_unique

#define __cpp_lib_make_unique

std::make_unique for single objects

Definition at line 940 of file unique_ptr.h.

Function Documentation

◆ allocate_shared()

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

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 858 of file bits/shared_ptr.h.

◆ atomic_compare_exchange_strong() [1/2]

template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_strong ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > * __v,
__shared_ptr< _Tp, _Lp > __w )
inline

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 299 of file shared_ptr_atomic.h.

References move().

◆ atomic_compare_exchange_strong() [2/2]

template<typename _Tp>
bool std::atomic_compare_exchange_strong ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > * __v,
shared_ptr< _Tp > __w )
inline

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 247 of file shared_ptr_atomic.h.

References move().

◆ atomic_compare_exchange_strong_explicit() [1/2]

template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_strong_explicit ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > * __v,
__shared_ptr< _Tp, _Lp > __w,
memory_order ,
memory_order  )

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 277 of file shared_ptr_atomic.h.

References move().

◆ atomic_compare_exchange_strong_explicit() [2/2]

template<typename _Tp>
bool std::atomic_compare_exchange_strong_explicit ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > * __v,
shared_ptr< _Tp > __w,
memory_order ,
memory_order  )

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 225 of file shared_ptr_atomic.h.

References move().

◆ atomic_compare_exchange_weak() [1/2]

template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_weak ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > * __v,
__shared_ptr< _Tp, _Lp > __w )
inline

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 321 of file shared_ptr_atomic.h.

References move().

◆ atomic_compare_exchange_weak() [2/2]

template<typename _Tp>
bool std::atomic_compare_exchange_weak ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > * __v,
shared_ptr< _Tp > __w )
inline

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 268 of file shared_ptr_atomic.h.

References move().

◆ atomic_compare_exchange_weak_explicit() [1/2]

template<typename _Tp, _Lock_policy _Lp>
bool std::atomic_compare_exchange_weak_explicit ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > * __v,
__shared_ptr< _Tp, _Lp > __w,
memory_order __success,
memory_order __failure )
inline

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 309 of file shared_ptr_atomic.h.

References move().

◆ atomic_compare_exchange_weak_explicit() [2/2]

template<typename _Tp>
bool std::atomic_compare_exchange_weak_explicit ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > * __v,
shared_ptr< _Tp > __w,
memory_order __success,
memory_order __failure )
inline

Atomic compare-and-swap for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__vA non-null pointer to a shared_ptr object.
__wA non-null pointer to a shared_ptr object.
Returns
True if *__p was equivalent to *__v, false otherwise.

The memory order for failure shall not be memory_order_release or memory_order_acq_rel, or stronger than the memory order for success.

Definition at line 256 of file shared_ptr_atomic.h.

References move().

◆ atomic_exchange() [1/2]

template<typename _Tp, _Lock_policy _Lp>
__shared_ptr< _Tp, _Lp > std::atomic_exchange ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > __r )
inline

Atomic exchange for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rNew value to store in *__p.
Returns
The original value of *__p

Definition at line 205 of file shared_ptr_atomic.h.

References move().

◆ atomic_exchange() [2/2]

template<typename _Tp>
shared_ptr< _Tp > std::atomic_exchange ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > __r )
inline

Atomic exchange for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rNew value to store in *__p.
Returns
The original value of *__p

Definition at line 186 of file shared_ptr_atomic.h.

References move().

◆ atomic_exchange_explicit() [1/2]

template<typename _Tp, _Lock_policy _Lp>
__shared_ptr< _Tp, _Lp > std::atomic_exchange_explicit ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > __r,
memory_order  )
inline

Atomic exchange for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rNew value to store in *__p.
Returns
The original value of *__p

Definition at line 194 of file shared_ptr_atomic.h.

◆ atomic_exchange_explicit() [2/2]

template<typename _Tp>
shared_ptr< _Tp > std::atomic_exchange_explicit ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > __r,
memory_order  )
inline

Atomic exchange for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rNew value to store in *__p.
Returns
The original value of *__p

Definition at line 176 of file shared_ptr_atomic.h.

◆ atomic_is_lock_free()

template<typename _Tp, _Lock_policy _Lp>
bool atomic_is_lock_free ( const __shared_ptr< _Tp, _Lp > * __p)
related

Report whether shared_ptr atomic operations are lock-free.

Parameters
__pA non-null pointer to a shared_ptr object.
Returns
True if atomic access to *__p is lock-free, false otherwise.

Definition at line 76 of file shared_ptr_atomic.h.

◆ atomic_load() [1/2]

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

Atomic load for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
Returns
*__p

The memory order shall not be memory_order_release or memory_order_acq_rel.

Definition at line 124 of file shared_ptr_atomic.h.

◆ atomic_load() [2/2]

template<typename _Tp>
shared_ptr< _Tp > std::atomic_load ( const shared_ptr< _Tp > * __p)
inline

Atomic load for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
Returns
*__p

The memory order shall not be memory_order_release or memory_order_acq_rel.

Definition at line 111 of file shared_ptr_atomic.h.

◆ atomic_load_explicit() [1/2]

template<typename _Tp, _Lock_policy _Lp>
__shared_ptr< _Tp, _Lp > std::atomic_load_explicit ( const __shared_ptr< _Tp, _Lp > * __p,
memory_order  )
inline

Atomic load for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
Returns
*__p

The memory order shall not be memory_order_release or memory_order_acq_rel.

Definition at line 116 of file shared_ptr_atomic.h.

◆ atomic_load_explicit() [2/2]

template<typename _Tp>
shared_ptr< _Tp > std::atomic_load_explicit ( const shared_ptr< _Tp > * __p,
memory_order  )
inline

Atomic load for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
Returns
*__p

The memory order shall not be memory_order_release or memory_order_acq_rel.

Definition at line 103 of file shared_ptr_atomic.h.

◆ atomic_store() [1/2]

template<typename _Tp, _Lock_policy _Lp>
void std::atomic_store ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > __r )
inline

Atomic store for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rThe value to store.

The memory order shall not be memory_order_acquire or memory_order_acq_rel.

Definition at line 163 of file shared_ptr_atomic.h.

References move().

◆ atomic_store() [2/2]

template<typename _Tp>
void std::atomic_store ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > __r )
inline

Atomic store for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rThe value to store.

The memory order shall not be memory_order_acquire or memory_order_acq_rel.

Definition at line 148 of file shared_ptr_atomic.h.

References move().

◆ atomic_store_explicit() [1/2]

template<typename _Tp, _Lock_policy _Lp>
void std::atomic_store_explicit ( __shared_ptr< _Tp, _Lp > * __p,
__shared_ptr< _Tp, _Lp > __r,
memory_order  )
inline

Atomic store for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rThe value to store.

The memory order shall not be memory_order_acquire or memory_order_acq_rel.

Definition at line 153 of file shared_ptr_atomic.h.

◆ atomic_store_explicit() [2/2]

template<typename _Tp>
void std::atomic_store_explicit ( shared_ptr< _Tp > * __p,
shared_ptr< _Tp > __r,
memory_order  )
inline

Atomic store for shared_ptr objects.

Parameters
__pA non-null pointer to a shared_ptr object.
__rThe value to store.

The memory order shall not be memory_order_acquire or memory_order_acq_rel.

Definition at line 139 of file shared_ptr_atomic.h.

◆ const_pointer_cast()

template<typename _Tp, typename _Up>
shared_ptr< _Tp > const_pointer_cast ( const shared_ptr< _Up > & __r)
related

Convert type of shared_ptr, via const_cast.

Definition at line 591 of file bits/shared_ptr.h.

◆ dynamic_pointer_cast()

template<typename _Tp, typename _Up>
shared_ptr< _Tp > dynamic_pointer_cast ( const shared_ptr< _Up > & __r)
related

Convert type of shared_ptr, via dynamic_cast.

Definition at line 600 of file bits/shared_ptr.h.

◆ get_deleter() [1/2]

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

Definition at line 79 of file bits/shared_ptr.h.

◆ get_deleter() [2/2]

template<typename _Del, typename _Tp>
_Del * get_deleter ( const shared_ptr< _Tp > & __p)
related

20.7.2.2.10 shared_ptr get_deleter

If __p has a deleter of type _Del, return a pointer to it.

Definition at line 94 of file bits/shared_ptr.h.

◆ make_shared()

template<typename _Tp, typename... _Args>
shared_ptr< _Tp > make_shared ( _Args &&... __args)
related

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 875 of file bits/shared_ptr.h.

◆ make_unique() [1/3]

template<typename _Tp, typename... _Args>
_MakeUniq< _Tp >::__single_object make_unique ( _Args &&... __args)
related

std::make_unique for single objects

Definition at line 961 of file unique_ptr.h.

◆ make_unique() [2/3]

template<typename _Tp, typename... _Args>
_MakeUniq< _Tp >::__invalid_type make_unique ( _Args && ...)
related

Disable std::make_unique for arrays of known bound.

◆ make_unique() [3/3]

template<typename _Tp>
_MakeUniq< _Tp >::__array make_unique ( size_t __num)
related

std::make_unique for arrays of unknown bound

Definition at line 967 of file unique_ptr.h.

◆ operator!=() [1/6]

template<typename _Tp, typename _Up>
bool operator!= ( const shared_ptr< _Tp > & __a,
const shared_ptr< _Up > & __b )
related

Inequality operator for shared_ptr objects, compares the stored pointers.

Definition at line 470 of file bits/shared_ptr.h.

◆ operator!=() [2/6]

template<typename _Tp>
bool operator!= ( const shared_ptr< _Tp > & __a,
nullptr_t  )
related

shared_ptr comparison with nullptr

Definition at line 476 of file bits/shared_ptr.h.

◆ operator!=() [3/6]

template<typename _Tp>
bool operator!= ( nullptr_t ,
const shared_ptr< _Tp > & __a )
related

shared_ptr comparison with nullptr

Definition at line 482 of file bits/shared_ptr.h.

◆ operator!=() [4/6]

template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator!= ( const unique_ptr< _Tp, _Dp > & __x,
const unique_ptr< _Up, _Ep > & __y )
related

Inequality operator for unique_ptr objects, compares the owned pointers.

Definition at line 774 of file unique_ptr.h.

◆ operator!=() [5/6]

template<typename _Tp, typename _Dp>
bool operator!= ( const unique_ptr< _Tp, _Dp > & __x,
nullptr_t  )
related

unique_ptr comparison with nullptr

Definition at line 781 of file unique_ptr.h.

◆ operator!=() [6/6]

template<typename _Tp, typename _Dp>
bool operator!= ( nullptr_t ,
const unique_ptr< _Tp, _Dp > & __x )
related

unique_ptr comparison with nullptr

Definition at line 787 of file unique_ptr.h.

◆ operator<() [1/6]

template<typename _Tp, typename _Up>
bool operator< ( const shared_ptr< _Tp > & __a,
const shared_ptr< _Up > & __b )
related

Relational operator for shared_ptr objects, compares the stored pointers.

Definition at line 487 of file bits/shared_ptr.h.

◆ operator<() [2/6]

template<typename _Tp>
bool operator< ( const shared_ptr< _Tp > & __a,
nullptr_t  )
related

shared_ptr comparison with nullptr

Definition at line 498 of file bits/shared_ptr.h.

◆ operator<() [3/6]

template<typename _Tp>
bool operator< ( nullptr_t ,
const shared_ptr< _Tp > & __a )
related

shared_ptr comparison with nullptr

Definition at line 507 of file bits/shared_ptr.h.

◆ operator<() [4/6]

template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator< ( const unique_ptr< _Tp, _Dp > & __x,
const unique_ptr< _Up, _Ep > & __y )
related

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 794 of file unique_ptr.h.

◆ operator<() [5/6]

template<typename _Tp, typename _Dp>
bool operator< ( const unique_ptr< _Tp, _Dp > & __x,
nullptr_t  )
related

unique_ptr comparison with nullptr

Definition at line 806 of file unique_ptr.h.

◆ operator<() [6/6]

template<typename _Tp, typename _Dp>
bool operator< ( nullptr_t ,
const unique_ptr< _Tp, _Dp > & __x )
related

unique_ptr comparison with nullptr

Definition at line 815 of file unique_ptr.h.

◆ operator<<()

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

Write the stored pointer to an ostream.

Definition at line 1 of file bits/shared_ptr.h.

◆ operator<=() [1/6]

template<typename _Tp, typename _Up>
bool operator<= ( const shared_ptr< _Tp > & __a,
const shared_ptr< _Up > & __b )
related

Relational operator for shared_ptr objects, compares the stored pointers.

Definition at line 516 of file bits/shared_ptr.h.

◆ operator<=() [2/6]

template<typename _Tp>
bool operator<= ( const shared_ptr< _Tp > & __a,
nullptr_t  )
related

shared_ptr comparison with nullptr

Definition at line 522 of file bits/shared_ptr.h.

◆ operator<=() [3/6]

template<typename _Tp>
bool operator<= ( nullptr_t ,
const shared_ptr< _Tp > & __a )
related

shared_ptr comparison with nullptr

Definition at line 528 of file bits/shared_ptr.h.

◆ operator<=() [4/6]

template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator<= ( const unique_ptr< _Tp, _Dp > & __x,
const unique_ptr< _Up, _Ep > & __y )
related

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 825 of file unique_ptr.h.

◆ operator<=() [5/6]

template<typename _Tp, typename _Dp>
bool operator<= ( const unique_ptr< _Tp, _Dp > & __x,
nullptr_t  )
related

unique_ptr comparison with nullptr

Definition at line 832 of file unique_ptr.h.

◆ operator<=() [6/6]

template<typename _Tp, typename _Dp>
bool operator<= ( nullptr_t ,
const unique_ptr< _Tp, _Dp > & __x )
related

unique_ptr comparison with nullptr

Definition at line 838 of file unique_ptr.h.

◆ operator==() [1/6]

template<typename _Tp, typename _Up>
bool operator== ( const shared_ptr< _Tp > & __a,
const shared_ptr< _Up > & __b )
related

Equality operator for shared_ptr objects, compares the stored pointers.

Definition at line 437 of file bits/shared_ptr.h.

◆ operator==() [2/6]

template<typename _Tp>
bool operator== ( const shared_ptr< _Tp > & __a,
nullptr_t  )
related

shared_ptr comparison with nullptr

Definition at line 443 of file bits/shared_ptr.h.

◆ operator==() [3/6]

template<typename _Tp>
bool operator== ( nullptr_t ,
const shared_ptr< _Tp > & __a )
related

shared_ptr comparison with nullptr

Definition at line 464 of file bits/shared_ptr.h.

◆ operator==() [4/6]

template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator== ( const unique_ptr< _Tp, _Dp > & __x,
const unique_ptr< _Up, _Ep > & __y )
related

Equality operator for unique_ptr objects, compares the owned pointers.

Definition at line 753 of file unique_ptr.h.

◆ operator==() [5/6]

template<typename _Tp, typename _Dp>
bool operator== ( const unique_ptr< _Tp, _Dp > & __x,
nullptr_t  )
related

unique_ptr comparison with nullptr

Definition at line 760 of file unique_ptr.h.

◆ operator==() [6/6]

template<typename _Tp, typename _Dp>
bool operator== ( nullptr_t ,
const unique_ptr< _Tp, _Dp > & __x )
related

unique_ptr comparison with nullptr

Definition at line 767 of file unique_ptr.h.

◆ operator>() [1/6]

template<typename _Tp, typename _Up>
bool operator> ( const shared_ptr< _Tp > & __a,
const shared_ptr< _Up > & __b )
related

Relational operator for shared_ptr objects, compares the stored pointers.

Definition at line 535 of file bits/shared_ptr.h.

◆ operator>() [2/6]

template<typename _Tp>
bool operator> ( const shared_ptr< _Tp > & __a,
nullptr_t  )
related

shared_ptr comparison with nullptr

Definition at line 541 of file bits/shared_ptr.h.

◆ operator>() [3/6]

template<typename _Tp>
bool operator> ( nullptr_t ,
const shared_ptr< _Tp > & __a )
related

shared_ptr comparison with nullptr

Definition at line 547 of file bits/shared_ptr.h.

◆ operator>() [4/6]

template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator> ( const unique_ptr< _Tp, _Dp > & __x,
const unique_ptr< _Up, _Ep > & __y )
related

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 846 of file unique_ptr.h.

◆ operator>() [5/6]

template<typename _Tp, typename _Dp>
bool operator> ( const unique_ptr< _Tp, _Dp > & __x,
nullptr_t  )
related

unique_ptr comparison with nullptr

Definition at line 853 of file unique_ptr.h.

◆ operator>() [6/6]

template<typename _Tp, typename _Dp>
bool operator> ( nullptr_t ,
const unique_ptr< _Tp, _Dp > & __x )
related

unique_ptr comparison with nullptr

Definition at line 862 of file unique_ptr.h.

◆ operator>=() [1/6]

template<typename _Tp, typename _Up>
bool operator>= ( const shared_ptr< _Tp > & __a,
const shared_ptr< _Up > & __b )
related

Relational operator for shared_ptr objects, compares the stored pointers.

Definition at line 553 of file bits/shared_ptr.h.

◆ operator>=() [2/6]

template<typename _Tp>
bool operator>= ( const shared_ptr< _Tp > & __a,
nullptr_t  )
related

shared_ptr comparison with nullptr

Definition at line 559 of file bits/shared_ptr.h.

◆ operator>=() [3/6]

template<typename _Tp>
bool operator>= ( nullptr_t ,
const shared_ptr< _Tp > & __a )
related

shared_ptr comparison with nullptr

Definition at line 565 of file bits/shared_ptr.h.

◆ operator>=() [4/6]

template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
bool operator>= ( const unique_ptr< _Tp, _Dp > & __x,
const unique_ptr< _Up, _Ep > & __y )
related

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 872 of file unique_ptr.h.

◆ operator>=() [5/6]

template<typename _Tp, typename _Dp>
bool operator>= ( const unique_ptr< _Tp, _Dp > & __x,
nullptr_t  )
related

unique_ptr comparison with nullptr

Definition at line 879 of file unique_ptr.h.

◆ operator>=() [6/6]

template<typename _Tp, typename _Dp>
bool operator>= ( nullptr_t ,
const unique_ptr< _Tp, _Dp > & __x )
related

unique_ptr comparison with nullptr

Definition at line 885 of file unique_ptr.h.

◆ reinterpret_pointer_cast()

template<typename _Tp, typename _Up>
shared_ptr< _Tp > reinterpret_pointer_cast ( const shared_ptr< _Up > & __r)
related

Convert type of shared_ptr, via reinterpret_cast.

Definition at line 612 of file bits/shared_ptr.h.

◆ static_pointer_cast()

template<typename _Tp, typename _Up>
shared_ptr< _Tp > static_pointer_cast ( const shared_ptr< _Up > & __r)
related

Convert type of shared_ptr, via static_cast.

Definition at line 582 of file bits/shared_ptr.h.

◆ swap() [1/3]

template<typename _Tp>
void swap ( shared_ptr< _Tp > & __a,
shared_ptr< _Tp > & __b )
related

Swap overload for shared_ptr.

Definition at line 574 of file bits/shared_ptr.h.

◆ swap() [2/3]

template<typename _Tp, typename _Dp>
enable_if< __is_swappable< _Dp >::value >::type swap ( unique_ptr< _Tp, _Dp > & __x,
unique_ptr< _Tp, _Dp > & __y )
related

Swap overload for unique_ptr.

Definition at line 738 of file unique_ptr.h.

◆ swap() [3/3]

template<typename _Tp>
void swap ( weak_ptr< _Tp > & __a,
weak_ptr< _Tp > & __b )
related

Swap overload for weak_ptr.

Definition at line 763 of file bits/shared_ptr.h.