libstdc++
Pointer Abstractions
Collaboration diagram for Pointer Abstractions:

Classes

class  std::atomic< _Tp >
 
class  std::auto_ptr< _Tp >
 
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 >
 

Macros

#define __cpp_lib_atomic_shared_ptr
 
#define __cpp_lib_make_unique
 

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 _Tp , typename... _Args>
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_t< _Tp > make_unique (_Args &&... __args)
 
template<typename _Tp , typename... _Args>
__detail::__invalid_make_unique_t< _Tp > make_unique (_Args &&...)=delete
 
template<typename _Tp >
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_array_t< _Tp > make_unique (size_t __num)
 
template<typename _Tp >
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_t< _Tp > make_unique_for_overwrite ()
 
template<typename _Tp , typename... _Args>
__detail::__invalid_make_unique_t< _Tp > make_unique_for_overwrite (_Args &&...)=delete
 
template<typename _Tp >
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_array_t< _Tp > make_unique_for_overwrite (size_t __num)
 
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 _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator< (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator< (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator< (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
 
template<typename _CharT , typename _Traits , typename _Tp , typename _Dp >
basic_ostream< _CharT, _Traits > & operator<< (basic_ostream< _CharT, _Traits > &__os, const unique_ptr< _Tp, _Dp > &__p)
 
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 , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator<= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator<= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator<= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
 
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator== (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR 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 _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator> (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator> (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator> (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
 
template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator>= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR 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 _Del >
 std::shared_ptr (unique_ptr< _Tp, _Del >) -> shared_ptr< _Tp >
 
template<typename _Tp >
 std::shared_ptr (weak_ptr< _Tp >) -> shared_ptr< _Tp >
 
template<typename _Tp , typename _Dp >
enable_if<!__is_swappable< _Dp >::value >::type std::swap (unique_ptr< _Tp, _Dp > &, unique_ptr< _Tp, _Dp > &)=delete
 
template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR enable_if< __is_swappable< _Dp >::value >::type swap (unique_ptr< _Tp, _Dp > &__x, unique_ptr< _Tp, _Dp > &__y) noexcept
 
template<typename _Tp >
void swap (weak_ptr< _Tp > &__a, weak_ptr< _Tp > &__b) noexcept
 
template<typename _Tp >
constexpr _Tp * std::to_address (_Tp *__ptr) noexcept
 
template<typename _Ptr >
constexpr auto std::to_address (const _Ptr &__ptr) noexcept
 
template<typename _Tp >
 std::weak_ptr (shared_ptr< _Tp >) -> weak_ptr< _Tp >
 

Variables

template<typename _Up >
static constexpr bool std::__is_shared_ptr
 
template<typename _Up >
static constexpr bool std::__is_shared_ptr< shared_ptr< _Up > >
 
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 _Up >
shared_ptr< _Tp > static_pointer_cast (shared_ptr< _Up > &&__r) noexcept
 
template<typename _Tp , typename _Up >
shared_ptr< _Tp > const_pointer_cast (shared_ptr< _Up > &&__r) noexcept
 
template<typename _Tp , typename _Up >
shared_ptr< _Tp > dynamic_pointer_cast (shared_ptr< _Up > &&__r) noexcept
 
template<typename _Tp , typename _Up >
shared_ptr< _Tp > reinterpret_pointer_cast (shared_ptr< _Up > &&__r) noexcept
 
template<typename _Tp , typename _Alloc , typename... _Args>
shared_ptr< _NonArray< _Tp > > allocate_shared (const _Alloc &__a, _Args &&... __args)
 
template<typename _Tp , typename... _Args>
shared_ptr< _NonArray< _Tp > > make_shared (_Args &&... __args)
 
template<typename _Tp , typename _Alloc >
shared_ptr< _UnboundedArray< _Tp > > allocate_shared (const _Alloc &__a, size_t __n)
 
template<typename _Tp , typename _Alloc >
shared_ptr< _BoundedArray< _Tp > > allocate_shared (const _Alloc &__a)
 
template<typename _Tp , _Lock_policy _Lp>
bool atomic_is_lock_free (const __shared_ptr< _Tp, _Lp > *__p)
 
template<typename _Tp >
shared_ptr< _Tp > atomic_load_explicit (const shared_ptr< _Tp > *__p, memory_order)
 
template<typename _Tp >
void atomic_store_explicit (shared_ptr< _Tp > *__p, shared_ptr< _Tp > __r, memory_order)
 
template<typename _Tp >
shared_ptr< _Tp > atomic_exchange_explicit (shared_ptr< _Tp > *__p, shared_ptr< _Tp > __r, memory_order)
 
template<typename _Tp >
bool atomic_compare_exchange_strong_explicit (shared_ptr< _Tp > *__p, shared_ptr< _Tp > *__v, shared_ptr< _Tp > __w, memory_order, memory_order)
 

Detailed Description

Smart pointers, etc.

Macro Definition Documentation

◆ __cpp_lib_atomic_shared_ptr

#define __cpp_lib_atomic_shared_ptr

Definition at line 357 of file shared_ptr_atomic.h.

◆ __cpp_lib_make_unique

#define __cpp_lib_make_unique

Definition at line 1028 of file unique_ptr.h.

Function Documentation

◆ allocate_shared() [1/3]

template<typename _Tp , typename _Alloc >
shared_ptr< _BoundedArray< _Tp > > allocate_shared ( const _Alloc &  __a)
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 1073 of file bits/shared_ptr.h.

◆ allocate_shared() [2/3]

template<typename _Tp , typename _Alloc , typename... _Args>
shared_ptr< _NonArray< _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 990 of file bits/shared_ptr.h.

◆ allocate_shared() [3/3]

template<typename _Tp , typename _Alloc >
shared_ptr< _UnboundedArray< _Tp > > allocate_shared ( const _Alloc &  __a,
size_t  __n 
)
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 1030 of file bits/shared_ptr.h.

◆ atomic_compare_exchange_strong_explicit()

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

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 251 of file shared_ptr_atomic.h.

References std::move().

◆ atomic_exchange_explicit()

template<typename _Tp >
shared_ptr< _Tp > atomic_exchange_explicit ( shared_ptr< _Tp > *  __p,
shared_ptr< _Tp >  __r,
memory_order   
)
related

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 202 of file shared_ptr_atomic.h.

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

◆ 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 102 of file shared_ptr_atomic.h.

◆ atomic_load_explicit()

template<typename _Tp >
shared_ptr< _Tp > atomic_load_explicit ( const shared_ptr< _Tp > *  __p,
memory_order   
)
related

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 129 of file shared_ptr_atomic.h.

◆ atomic_store_explicit()

template<typename _Tp >
void atomic_store_explicit ( shared_ptr< _Tp > *  __p,
shared_ptr< _Tp >  __r,
memory_order   
)
related

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 165 of file shared_ptr_atomic.h.

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

◆ const_pointer_cast() [1/2]

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

◆ const_pointer_cast() [2/2]

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

Convert type of shared_ptr rvalue, via const_cast

Since
C++20

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

References std::move().

◆ dynamic_pointer_cast() [1/2]

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

◆ dynamic_pointer_cast() [2/2]

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

Convert type of shared_ptr rvalue, via dynamic_cast

Since
C++20

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

References std::move().

◆ 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< _NonArray< _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 1005 of file bits/shared_ptr.h.

◆ make_unique() [1/3]

template<typename _Tp , typename... _Args>
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_t< _Tp > make_unique ( _Args &&...  __args)
related

Create an object owned by a unique_ptr.

Template Parameters
_TpA non-array object type.
Parameters
__argsConstructor arguments for the new object.
Returns
A unique_ptr<_Tp> that owns the new object.
Since
C++14

Definition at line 1064 of file unique_ptr.h.

◆ make_unique() [2/3]

template<typename _Tp , typename... _Args>
__detail::__invalid_make_unique_t< _Tp > make_unique ( _Args &&  ...)
related

Disable std::make_unique for arrays of known bound.

Template Parameters
_TpAn array type of known bound, such as U[N].
Since
C++14

◆ make_unique() [3/3]

template<typename _Tp >
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_array_t< _Tp > make_unique ( size_t  __num)
related

Create an array owned by a unique_ptr.

Template Parameters
_TpAn array type of unknown bound, such as U[].
Parameters
__numThe number of elements of type U in the new array.
Returns
A unique_ptr<U[]> that owns the new array.
Since
C++14

The array elements are value-initialized.

Definition at line 1079 of file unique_ptr.h.

◆ make_unique_for_overwrite() [1/3]

template<typename _Tp >
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_t< _Tp > make_unique_for_overwrite ( )
related

Create a default-initialied object owned by a unique_ptr.

Template Parameters
_TpA non-array object type.
Returns
A unique_ptr<_Tp> that owns the new object.
Since
C++20

Definition at line 1101 of file unique_ptr.h.

◆ make_unique_for_overwrite() [2/3]

template<typename _Tp , typename... _Args>
__detail::__invalid_make_unique_t< _Tp > make_unique_for_overwrite ( _Args &&  ...)
related

Disable std::make_unique_for_overwrite for arrays of known bound.

Template Parameters
_TpAn array type of known bound, such as U[N].
Since
C++20

References std::unique_ptr< _Tp, _Dp >::get().

◆ make_unique_for_overwrite() [3/3]

template<typename _Tp >
_GLIBCXX23_CONSTEXPR __detail::__unique_ptr_array_t< _Tp > make_unique_for_overwrite ( size_t  __num)
related

Create a default-initialized array owned by a unique_ptr.

Template Parameters
_TpAn array type of unknown bound, such as U[].
Parameters
__numThe number of elements of type U in the new array.
Returns
A unique_ptr<U[]> that owns the new array.
Since
C++20

Definition at line 1114 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 588 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 594 of file bits/shared_ptr.h.

◆ operator!=() [3/6]

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

Inequality operator for unique_ptr objects, compares the owned pointers.

Definition at line 848 of file unique_ptr.h.

References std::unique_ptr< _Tp, _Dp >::get().

◆ operator!=() [4/6]

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

unique_ptr comparison with nullptr

Definition at line 856 of file unique_ptr.h.

◆ operator!=() [5/6]

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

shared_ptr comparison with nullptr

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

◆ operator!=() [6/6]

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

unique_ptr comparison with nullptr

Definition at line 863 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 605 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 616 of file bits/shared_ptr.h.

◆ operator<() [3/6]

template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator< ( const unique_ptr< _Tp, _Dp > &  __x,
const unique_ptr< _Up, _Ep > &  __y 
)
inline

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 871 of file unique_ptr.h.

References std::unique_ptr< _Tp, _Dp >::get().

◆ operator<() [4/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator< ( const unique_ptr< _Tp, _Dp > &  __x,
nullptr_t   
)
inline

unique_ptr comparison with nullptr

Definition at line 884 of file unique_ptr.h.

References std::unique_ptr< _Tp, _Dp >::get().

◆ operator<() [5/6]

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

shared_ptr comparison with nullptr

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

◆ operator<() [6/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator< ( nullptr_t  ,
const unique_ptr< _Tp, _Dp > &  __x 
)
inline

unique_ptr comparison with nullptr

Definition at line 894 of file unique_ptr.h.

References std::unique_ptr< _Tp, _Dp >::get().

◆ operator<<() [1/2]

template<typename _CharT , typename _Traits , typename _Tp , typename _Dp >
basic_ostream< _CharT, _Traits > & operator<< ( basic_ostream< _CharT, _Traits > &  __os,
const unique_ptr< _Tp, _Dp > &  __p 
)
related

Stream output operator for unique_ptr.

Since
C++20

Definition at line 1124 of file unique_ptr.h.

◆ operator<<() [2/2]

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.

References std::operator<<().

◆ 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 634 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 640 of file bits/shared_ptr.h.

◆ operator<=() [3/6]

template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator<= ( const unique_ptr< _Tp, _Dp > &  __x,
const unique_ptr< _Up, _Ep > &  __y 
)
inline

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 905 of file unique_ptr.h.

◆ operator<=() [4/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator<= ( const unique_ptr< _Tp, _Dp > &  __x,
nullptr_t   
)
inline

unique_ptr comparison with nullptr

Definition at line 913 of file unique_ptr.h.

◆ operator<=() [5/6]

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

shared_ptr comparison with nullptr

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

◆ operator<=() [6/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator<= ( nullptr_t  ,
const unique_ptr< _Tp, _Dp > &  __x 
)
inline

unique_ptr comparison with nullptr

Definition at line 920 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 555 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 561 of file bits/shared_ptr.h.

◆ operator==() [3/6]

template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator== ( const unique_ptr< _Tp, _Dp > &  __x,
const unique_ptr< _Up, _Ep > &  __y 
)
inline

Equality operator for unique_ptr objects, compares the owned pointers.

Definition at line 824 of file unique_ptr.h.

References std::unique_ptr< _Tp, _Dp >::get().

◆ operator==() [4/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator== ( const unique_ptr< _Tp, _Dp > &  __x,
nullptr_t   
)
inlinenoexcept

unique_ptr comparison with nullptr

Definition at line 832 of file unique_ptr.h.

◆ operator==() [5/6]

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

shared_ptr comparison with nullptr

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

◆ operator==() [6/6]

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

unique_ptr comparison with nullptr

Definition at line 840 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 653 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 659 of file bits/shared_ptr.h.

◆ operator>() [3/6]

template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator> ( const unique_ptr< _Tp, _Dp > &  __x,
const unique_ptr< _Up, _Ep > &  __y 
)
inline

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 929 of file unique_ptr.h.

◆ operator>() [4/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator> ( const unique_ptr< _Tp, _Dp > &  __x,
nullptr_t   
)
inline

unique_ptr comparison with nullptr

Definition at line 937 of file unique_ptr.h.

References std::unique_ptr< _Tp, _Dp >::get().

◆ operator>() [5/6]

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

shared_ptr comparison with nullptr

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

◆ operator>() [6/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator> ( nullptr_t  ,
const unique_ptr< _Tp, _Dp > &  __x 
)
inline

unique_ptr comparison with nullptr

Definition at line 947 of file unique_ptr.h.

References std::unique_ptr< _Tp, _Dp >::get().

◆ 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 671 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 677 of file bits/shared_ptr.h.

◆ operator>=() [3/6]

template<typename _Tp , typename _Dp , typename _Up , typename _Ep >
_GLIBCXX23_CONSTEXPR bool std::operator>= ( const unique_ptr< _Tp, _Dp > &  __x,
const unique_ptr< _Up, _Ep > &  __y 
)
inline

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 958 of file unique_ptr.h.

◆ operator>=() [4/6]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR bool std::operator>= ( const unique_ptr< _Tp, _Dp > &  __x,
nullptr_t   
)
inline

unique_ptr comparison with nullptr

Definition at line 966 of file unique_ptr.h.

◆ operator>=() [5/6]

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

shared_ptr comparison with nullptr

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

◆ operator>=() [6/6]

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

unique_ptr comparison with nullptr

Definition at line 972 of file unique_ptr.h.

◆ reinterpret_pointer_cast() [1/2]

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

Since
C++17

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

◆ reinterpret_pointer_cast() [2/2]

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

Convert type of shared_ptr rvalue, via reinterpret_cast

Since
C++20

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

References std::move().

◆ static_pointer_cast() [1/2]

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

◆ static_pointer_cast() [2/2]

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

Convert type of shared_ptr rvalue, via static_cast

Since
C++20

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

References std::move().

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

Referenced by std::shared_ptr< _Tp >::atomic_exchange_explicit(), and std::shared_ptr< _Tp >::atomic_store_explicit().

◆ swap() [2/3]

template<typename _Tp , typename _Dp >
_GLIBCXX23_CONSTEXPR 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 808 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 888 of file bits/shared_ptr.h.

◆ to_address() [1/2]

template<typename _Tp >
constexpr _Tp * std::to_address ( _Tp *  __ptr)
constexprnoexcept

Obtain address referenced by a pointer to an object.

Parameters
__ptrA pointer to an object
Returns
__ptr

Definition at line 266 of file ptr_traits.h.

◆ to_address() [2/2]

template<typename _Ptr >
constexpr auto std::to_address ( const _Ptr &  __ptr)
constexprnoexcept

Obtain address referenced by a pointer to an object.

Parameters
__ptrA pointer to an object
Returns
pointer_traits<_Ptr>::to_address(__ptr) if that expression is well-formed, otherwise to_address(__ptr.operator->())

Definition at line 278 of file ptr_traits.h.

Variable Documentation

◆ __is_shared_ptr

template<typename _Up >
constexpr bool std::__is_shared_ptr
staticconstexpr

Definition at line 362 of file shared_ptr_atomic.h.

◆ __is_shared_ptr< shared_ptr< _Up > >

template<typename _Up >
constexpr bool std::__is_shared_ptr< shared_ptr< _Up > >
staticconstexpr

Definition at line 364 of file shared_ptr_atomic.h.