Pointer Abstractions
Utilities » Memory
Collaboration diagram for Pointer Abstractions:

## Classes

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_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>
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>
constexpr __detail::__unique_ptr_array_t< _Tp > | make_unique (size_t __num)
template<typename _Tp>
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>
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>
constexpr bool | std::operator< (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
constexpr bool | std::operator< (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp, typename _Dp>
constexpr 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 > & | operator<< (std::basic_ostream< _Ch, _Tr > &__os, const __shared_ptr< _Tp, _Lp > &__p)
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 _Tp, typename _Dp, typename _Up, typename _Ep>
constexpr bool | std::operator<= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
constexpr bool | std::operator<= (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp, typename _Dp>
constexpr bool | std::operator<= (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
constexpr bool | std::operator== (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
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>
constexpr bool | std::operator> (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
constexpr bool | std::operator> (const unique_ptr< _Tp, _Dp > &__x, nullptr_t)
template<typename _Tp, typename _Dp>
constexpr bool | std::operator> (nullptr_t, const unique_ptr< _Tp, _Dp > &__x)
template<typename _Tp, typename _Dp, typename _Up, typename _Ep>
constexpr bool | std::operator>= (const unique_ptr< _Tp, _Dp > &__x, const unique_ptr< _Up, _Ep > &__y)
template<typename _Tp, typename _Dp>
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>
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, _Lock_policy _Lp>
bool | std::atomic_is_lock_free (const __shared_ptr< _Tp, _Lp > *__p)
template<typename _Tp>
bool | std::atomic_is_lock_free (const shared_ptr< _Tp > *__p)
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 _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)

## Detailed Description

Smart pointers, etc.

## Macro Definition Documentation

## __cpp_lib_make_unique

#define __cpp_lib_make_unique

Definition at line 1035 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

  __a | An allocator.
  __args | Arguments for the _Tp object's constructor.

Returns
  A shared_ptr that owns the newly created object.

Exceptions

  An | exception 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

  __a | An allocator.
  __args | Arguments for the _Tp object's constructor.

Returns
  A shared_ptr that owns the newly created object.

Exceptions

  An | exception 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

  __a | An allocator.
  __args | Arguments for the _Tp object's constructor.

Returns
  A shared_ptr that owns the newly created object.

Exceptions

  An | exception 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() [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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 325 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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 273 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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 303 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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 251 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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 347 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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 294 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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 335 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

  __p | A non-null pointer to a shared_ptr object.
  __v | A non-null pointer to a shared_ptr object.
  __w | A 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.

Definition at line 282 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

  __p | A non-null pointer to a shared_ptr object.
  __r | New value to store in *__p.

Returns
  The original value of *__p

Definition at line 231 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

  __p | A non-null pointer to a shared_ptr object.
  __r | New value to store in *__p.

Returns
  The original value of *__p

Definition at line 212 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

  __p | A non-null pointer to a shared_ptr object.
  __r | New value to store in *__p.

Returns
  The original value of *__p

Definition at line 220 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

  __p | A non-null pointer to a shared_ptr object.
  __r | New value to store in *__p.

Returns
  The original value of *__p

Definition at line 202 of file shared_ptr_atomic.h.

## atomic_is_lock_free() [1/2]

template<typename _Tp, _Lock_policy _Lp>

bool std::atomic_is_lock_free | ( | const __shared_ptr< _Tp, _Lp > * | __p | ) |

inline

Report whether shared_ptr atomic operations are lock-free.

Parameters

  __p | A 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_is_lock_free() [2/2]

template<typename _Tp>

bool std::atomic_is_lock_free | ( | const shared_ptr< _Tp > * | __p | ) |

inline

Report whether shared_ptr atomic operations are lock-free.

Parameters

  __p | A non-null pointer to a shared_ptr object.

Returns
  True if atomic access to `*__p` is lock-free, false otherwise.

Definition at line 113 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

  __p | A 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 150 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

  __p | A 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 137 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

  __p | A 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 142 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

  __p | A 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() [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

  __p | A non-null pointer to a shared_ptr object.
  __r | The value to store.

The memory order shall not be memory_order_acquire or memory_order_acq_rel.

Definition at line 189 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

  __p | A non-null pointer to a shared_ptr object.
  __r | The value to store.

The memory order shall not be memory_order_acquire or memory_order_acq_rel.

Definition at line 174 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

  __p | A non-null pointer to a shared_ptr object.
  __r | The value to store.

The memory order shall not be memory_order_acquire or memory_order_acq_rel.

Definition at line 179 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

  __p | A non-null pointer to a shared_ptr object.
  __r | The 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.

## 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.

## 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.

## get_deleter() [1/2]

template<typename _Del, typename _Tp, _Lock_policy _Lp>

_Del * std::get_deleter | ( | const __shared_ptr< _Tp, _Lp > & | __p | ) |

inline noexcept

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

  __args | Arguments for the _Tp object's constructor.

Returns
  A shared_ptr that owns the newly created object.

Exceptions

  std::bad_alloc,or | an 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>

__detail::__unique_ptr_t< _Tp > make_unique | ( | _Args &&... | __args | ) |

related

Create an object owned by a unique_ptr.

Template Parameters

  _Tp | A non-array object type.

Parameters

  __args | Constructor arguments for the new object.

Returns
  A unique_ptr<_Tp> that owns the new object.

Since
  C++14

Definition at line 1071 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

  _Tp | An array type of known bound, such as U[N].

Since
  C++14

## make_unique() [3/3]

template<typename _Tp>

__detail::__unique_ptr_array_t< _Tp > make_unique | ( | size_t | __num | ) |

related

Create an array owned by a unique_ptr.

Template Parameters

  _Tp | An array type of unknown bound, such as U[].

Parameters

  __num | The 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 1086 of file unique_ptr.h.

## make_unique_for_overwrite() [1/3]

template<typename _Tp>

__detail::__unique_ptr_t< _Tp > make_unique_for_overwrite | ( |  | ) |

related

Create a default-initialied object owned by a unique_ptr.

Template Parameters

  _Tp | A non-array object type.

Returns
  A unique_ptr<_Tp> that owns the new object.

Since
  C++20

Definition at line 1108 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

  _Tp | An array type of known bound, such as U[N].

Since
  C++20

## make_unique_for_overwrite() [3/3]

template<typename _Tp>

__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

  _Tp | An array type of unknown bound, such as U[].

Parameters

  __num | The 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 1121 of file unique_ptr.h.

## operator!=() [1/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 nodiscard

Inequality operator for unique_ptr objects, compares the owned pointers.

Definition at line 855 of file unique_ptr.h.

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

## operator!=() [2/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard noexcept

unique_ptr comparison with nullptr

Definition at line 863 of file unique_ptr.h.

## operator!=() [3/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard noexcept

unique_ptr comparison with nullptr

Definition at line 870 of file unique_ptr.h.

## operator!=() [4/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!=() [5/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!=() [6/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<() [1/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 nodiscard constexpr

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 878 of file unique_ptr.h.

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

## operator<() [2/6]

template<typename _Tp, typename _Dp>

bool std::operator< | ( | const unique_ptr< _Tp, _Dp > & | __x,
|  | nullptr_t | )

inline nodiscard constexpr

unique_ptr comparison with nullptr

Definition at line 891 of file unique_ptr.h.

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

## operator<() [3/6]

template<typename _Tp, typename _Dp>

bool std::operator< | ( | nullptr_t | ,
|  | const unique_ptr< _Tp, _Dp > & | __x )

inline nodiscard constexpr

unique_ptr comparison with nullptr

Definition at line 901 of file unique_ptr.h.

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

## operator<() [4/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<() [5/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<() [6/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<<() [1/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.

## operator<<() [2/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 1131 of file unique_ptr.h.

## operator<=() [1/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 nodiscard constexpr

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 912 of file unique_ptr.h.

## operator<=() [2/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard constexpr

unique_ptr comparison with nullptr

Definition at line 920 of file unique_ptr.h.

## operator<=() [3/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard constexpr

unique_ptr comparison with nullptr

Definition at line 927 of file unique_ptr.h.

## operator<=() [4/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<=() [5/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<=() [6/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==() [1/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 nodiscard constexpr

Equality operator for unique_ptr objects, compares the owned pointers.

Definition at line 831 of file unique_ptr.h.

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

## operator==() [2/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard constexpr noexcept

unique_ptr comparison with nullptr

Definition at line 839 of file unique_ptr.h.

## operator==() [3/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard noexcept

unique_ptr comparison with nullptr

Definition at line 847 of file unique_ptr.h.

## operator==() [4/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==() [5/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==() [6/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>() [1/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 nodiscard constexpr

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 936 of file unique_ptr.h.

## operator>() [2/6]

template<typename _Tp, typename _Dp>

bool std::operator> | ( | const unique_ptr< _Tp, _Dp > & | __x,
|  | nullptr_t | )

inline nodiscard constexpr

unique_ptr comparison with nullptr

Definition at line 944 of file unique_ptr.h.

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

## operator>() [3/6]

template<typename _Tp, typename _Dp>

bool std::operator> | ( | nullptr_t | ,
|  | const unique_ptr< _Tp, _Dp > & | __x )

inline nodiscard constexpr

unique_ptr comparison with nullptr

Definition at line 954 of file unique_ptr.h.

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

## operator>() [4/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>() [5/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>() [6/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>=() [1/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 nodiscard constexpr

Relational operator for unique_ptr objects, compares the owned pointers.

Definition at line 965 of file unique_ptr.h.

## operator>=() [2/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard constexpr

unique_ptr comparison with nullptr

Definition at line 973 of file unique_ptr.h.

## operator>=() [3/6]

template<typename _Tp, typename _Dp>

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

inline nodiscard

unique_ptr comparison with nullptr

Definition at line 979 of file unique_ptr.h.

## operator>=() [4/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>=() [5/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>=() [6/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.

## 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.

## 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.

## 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.

## 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 815 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>

_Tp * std::to_address | ( | _Tp * | __ptr | ) |

constexpr noexcept

Obtain address referenced by a pointer to an object.

Parameters

  __ptr | A pointer to an object

Returns
  `__ptr`

Definition at line 247 of file ptr_traits.h.

## to_address() [2/2]

template<typename _Ptr>

auto std::to_address | ( | const _Ptr & | __ptr | ) |

constexpr noexcept

Obtain address referenced by a pointer to an object.

Parameters

  __ptr | A 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 259 of file ptr_traits.h.

## Variable Documentation

## __is_shared_ptr

template<typename _Up>

bool std::__is_shared_ptr

static constexpr

Definition at line 370 of file shared_ptr_atomic.h.

## __is_shared_ptr< shared_ptr< _Up > >

template<typename _Up>

bool std::__is_shared_ptr< shared_ptr< _Up > >

static constexpr

Definition at line 372 of file shared_ptr_atomic.h.