STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs | Enumerations | Functions
memory File Reference
#include <xmemory>
#include <exception>
#include <typeinfo>
#include <type_traits>

Classes

class  raw_storage_iterator< _OutIt, _Ty >
 
struct  _No_bad_weak_ptr
 
struct  default_delete< _Ty >
 
class  unique_ptr< _Ty, _Dx >
 
class  bad_weak_ptr
 
class  _Ref_count_base
 
class  _Ref_count< _Ty >
 
class  _Ref_count_del< _Ty, _Dx >
 
class  _Ref_count_del_alloc< _Ty, _Dx, _Alloc >
 
class  weak_ptr< _Ty >
 
class  shared_ptr< _Ty >
 
class  enable_shared_from_this< _Ty >
 
class  _Ptr_base< _Ty >
 
class  shared_ptr< _Ty >
 
class  _Ref_count_obj< _Ty >
 
class  _Ref_count_obj_alloc< _Ty, _Alloc >
 
class  weak_ptr< _Ty >
 
class  enable_shared_from_this< _Ty >
 
struct  default_delete< _Ty >
 
struct  default_delete< _Ty[]>
 
struct  _Get_deleter_pointer_type< _Ty, _Dx_noref, class >
 
struct  _Get_deleter_pointer_type< _Ty, _Dx_noref, void_t< typename _Dx_noref::pointer > >
 
class  _Unique_ptr_base< _Ty, _Dx >
 
class  unique_ptr< _Ty, _Dx >
 
class  unique_ptr< _Ty[], _Dx >
 
struct  owner_less< _Ty >
 
struct  owner_less< shared_ptr< _Ty > >
 
struct  owner_less< weak_ptr< _Ty > >
 
struct  owner_less< void >
 
struct  hash< unique_ptr< _Ty, _Dx > >
 
struct  hash< shared_ptr< _Ty > >
 
struct  _Shared_ptr_spin_lock
 

Macros

#define _MEMORY_
 

Typedefs

typedef pointer_safety _Pointer_safety
 

Enumerations

enum  pointer_safety { pointer_safety::relaxed, pointer_safety::preferred, pointer_safety::strict }
 

Functions

template<class _InIt , class _FwdIt >
_STD_BEGIN _FwdIt _Uninitialized_copy_unchecked (_InIt _First, _InIt _Last, _FwdIt _Dest, _General_ptr_iterator_tag)
 
template<class _InIt , class _FwdIt >
_FwdIt _Uninitialized_copy_unchecked (_InIt _First, _InIt _Last, _FwdIt _Dest, _Really_trivial_ptr_iterator_tag)
 
template<class _InIt , class _FwdIt >
_FwdIt uninitialized_copy (_InIt _First, _InIt _Last, _FwdIt _Dest)
 
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt _Uninitialized_copy_n_unchecked1 (_InIt _First, _Diff _Count, _FwdIt _Dest, _General_ptr_iterator_tag)
 
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt _Uninitialized_copy_n_unchecked1 (_InIt _First, _Diff _Count, _FwdIt _Dest, _Really_trivial_ptr_iterator_tag)
 
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt _Uninitialized_copy_n_unchecked (_InIt _First, _Diff _Count, _FwdIt _Dest)
 
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt uninitialized_copy_n (_InIt _First, _Diff _Count, _FwdIt _Dest)
 
template<class _FwdIt , class _Tval >
void _Uninitialized_fill_unchecked (_FwdIt _First, _FwdIt _Last, const _Tval &_Val, false_type)
 
template<class _FwdIt , class _Tval >
void _Uninitialized_fill_unchecked (_FwdIt _First, _FwdIt _Last, const _Tval &_Val, true_type)
 
template<class _FwdIt , class _Tval >
void uninitialized_fill (_FwdIt _First, _FwdIt _Last, const _Tval &_Val)
 
template<class _FwdIt , class _Diff , class _Tval >
_FwdIt _Uninitialized_fill_n_unchecked (_FwdIt _First, _Diff _Count, const _Tval &_Val, false_type)
 
template<class _FwdIt , class _Diff , class _Tval >
_FwdIt _Uninitialized_fill_n_unchecked (_FwdIt _First, _Diff _Count, const _Tval &_Val, true_type)
 
template<class _FwdIt , class _Diff , class _Tval >
_FwdIt uninitialized_fill_n (_FwdIt _First, _Diff _Count, const _Tval &_Val)
 
template<class _Ty1 , class _Ty2 >
void _Do_enable (_Ty1 *, enable_shared_from_this< _Ty2 > *, _Ref_count_base *)
 
template<class _Ty >
void _Enable_shared (_Ty *_Ptr, _Ref_count_base *_Refptr, typename _Ty::_EStype *=0)
 
void _Enable_shared (const volatile void *, const volatile void *)
 
template<class _Ty1 , class _Ty2 >
bool operator== (const shared_ptr< _Ty1 > &_Left, const shared_ptr< _Ty2 > &_Right) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
bool operator!= (const shared_ptr< _Ty1 > &_Left, const shared_ptr< _Ty2 > &_Right) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
bool operator< (const shared_ptr< _Ty1 > &_Left, const shared_ptr< _Ty2 > &_Right) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
bool operator>= (const shared_ptr< _Ty1 > &_Left, const shared_ptr< _Ty2 > &_Right) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
bool operator> (const shared_ptr< _Ty1 > &_Left, const shared_ptr< _Ty2 > &_Right) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
bool operator<= (const shared_ptr< _Ty1 > &_Left, const shared_ptr< _Ty2 > &_Right) _NOEXCEPT
 
template<class _Ty >
bool operator== (const shared_ptr< _Ty > &_Left, nullptr_t) _NOEXCEPT
 
template<class _Ty >
bool operator== (nullptr_t, const shared_ptr< _Ty > &_Right) _NOEXCEPT
 
template<class _Ty >
bool operator!= (const shared_ptr< _Ty > &_Left, nullptr_t) _NOEXCEPT
 
template<class _Ty >
bool operator!= (nullptr_t, const shared_ptr< _Ty > &_Right) _NOEXCEPT
 
template<class _Ty >
bool operator< (const shared_ptr< _Ty > &_Left, nullptr_t) _NOEXCEPT
 
template<class _Ty >
bool operator< (nullptr_t, const shared_ptr< _Ty > &_Right) _NOEXCEPT
 
template<class _Ty >
bool operator>= (const shared_ptr< _Ty > &_Left, nullptr_t) _NOEXCEPT
 
template<class _Ty >
bool operator>= (nullptr_t, const shared_ptr< _Ty > &_Right) _NOEXCEPT
 
template<class _Ty >
bool operator> (const shared_ptr< _Ty > &_Left, nullptr_t) _NOEXCEPT
 
template<class _Ty >
bool operator> (nullptr_t, const shared_ptr< _Ty > &_Right) _NOEXCEPT
 
template<class _Ty >
bool operator<= (const shared_ptr< _Ty > &_Left, nullptr_t) _NOEXCEPT
 
template<class _Ty >
bool operator<= (nullptr_t, const shared_ptr< _Ty > &_Right) _NOEXCEPT
 
template<class _Elem , class _Traits , class _Ty >
basic_ostream< _Elem, _Traits > & operator<< (basic_ostream< _Elem, _Traits > &_Out, const shared_ptr< _Ty > &_Px)
 
template<class _Ty >
void swap (shared_ptr< _Ty > &_Left, shared_ptr< _Ty > &_Right) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
shared_ptr< _Ty1 > static_pointer_cast (const shared_ptr< _Ty2 > &_Other) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
shared_ptr< _Ty1 > const_pointer_cast (const shared_ptr< _Ty2 > &_Other) _NOEXCEPT
 
template<class _Ty1 , class _Ty2 >
shared_ptr< _Ty1 > dynamic_pointer_cast (const shared_ptr< _Ty2 > &_Other) _NOEXCEPT
 
template<class _Dx , class _Ty >
_Dx * get_deleter (const shared_ptr< _Ty > &_Sx) _NOEXCEPT
 
template<class _Ty , class... _Types>
shared_ptr< _Ty > make_shared (_Types &&..._Args)
 
template<class _Ty , class _Alloc , class... _Types>
shared_ptr< _Ty > allocate_shared (const _Alloc &_Al_arg, _Types &&..._Args)
 
template<class _Ty >
void swap (weak_ptr< _Ty > &_W1, weak_ptr< _Ty > &_W2) _NOEXCEPT
 
template<class _Ty , class... _Types>
enable_if<!is_array< _Ty >::value, unique_ptr< _Ty > >::type make_unique (_Types &&..._Args)
 
template<class _Ty >
enable_if< is_array< _Ty >::value &&extent< _Ty >::value==0, unique_ptr< _Ty > >::type make_unique (size_t _Size)
 
template<class _Ty , class... _Types>
enable_if< extent< _Ty >::value!=0, void >::type make_unique (_Types &&...)=delete
 
template<class _Ty , class _Dx , class = enable_if_t<_Is_swappable<_Dx>::value>>
void swap (unique_ptr< _Ty, _Dx > &_Left, unique_ptr< _Ty, _Dx > &_Right) _NOEXCEPT
 
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator== (const unique_ptr< _Ty1, _Dx1 > &_Left, const unique_ptr< _Ty2, _Dx2 > &_Right)
 
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator!= (const unique_ptr< _Ty1, _Dx1 > &_Left, const unique_ptr< _Ty2, _Dx2 > &_Right)
 
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator< (const unique_ptr< _Ty1, _Dx1 > &_Left, const unique_ptr< _Ty2, _Dx2 > &_Right)
 
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator>= (const unique_ptr< _Ty1, _Dx1 > &_Left, const unique_ptr< _Ty2, _Dx2 > &_Right)
 
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator> (const unique_ptr< _Ty1, _Dx1 > &_Left, const unique_ptr< _Ty2, _Dx2 > &_Right)
 
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator<= (const unique_ptr< _Ty1, _Dx1 > &_Left, const unique_ptr< _Ty2, _Dx2 > &_Right)
 
template<class _Ty , class _Dx >
bool operator== (const unique_ptr< _Ty, _Dx > &_Left, nullptr_t) _NOEXCEPT
 
template<class _Ty , class _Dx >
bool operator== (nullptr_t, const unique_ptr< _Ty, _Dx > &_Right) _NOEXCEPT
 
template<class _Ty , class _Dx >
bool operator!= (const unique_ptr< _Ty, _Dx > &_Left, nullptr_t _Right) _NOEXCEPT
 
template<class _Ty , class _Dx >
bool operator!= (nullptr_t _Left, const unique_ptr< _Ty, _Dx > &_Right) _NOEXCEPT
 
template<class _Ty , class _Dx >
bool operator< (const unique_ptr< _Ty, _Dx > &_Left, nullptr_t _Right)
 
template<class _Ty , class _Dx >
bool operator< (nullptr_t _Left, const unique_ptr< _Ty, _Dx > &_Right)
 
template<class _Ty , class _Dx >
bool operator>= (const unique_ptr< _Ty, _Dx > &_Left, nullptr_t _Right)
 
template<class _Ty , class _Dx >
bool operator>= (nullptr_t _Left, const unique_ptr< _Ty, _Dx > &_Right)
 
template<class _Ty , class _Dx >
bool operator> (const unique_ptr< _Ty, _Dx > &_Left, nullptr_t _Right)
 
template<class _Ty , class _Dx >
bool operator> (nullptr_t _Left, const unique_ptr< _Ty, _Dx > &_Right)
 
template<class _Ty , class _Dx >
bool operator<= (const unique_ptr< _Ty, _Dx > &_Left, nullptr_t _Right)
 
template<class _Ty , class _Dx >
bool operator<= (nullptr_t _Left, const unique_ptr< _Ty, _Dx > &_Right)
 
void declare_reachable (void *)
 
template<class _Ty >
_Ty * undeclare_reachable (_Ty *_Ptr)
 
void declare_no_pointers (char *, size_t)
 
void undeclare_no_pointers (char *, size_t)
 
_Pointer_safety get_pointer_safety () _NOEXCEPT
 
voidalign (size_t _Bound, size_t _Size, void *&_Ptr, size_t &_Space) _NOEXCEPT
 
_EXTERN_C _CRTIMP2_PURE void __cdecl _Lock_shared_ptr_spin_lock ()
 
_CRTIMP2_PURE void __cdecl _Unlock_shared_ptr_spin_lock ()
 
template<class _Ty >
bool atomic_is_lock_free (const shared_ptr< _Ty > *)
 
template<class _Ty >
shared_ptr< _Ty > atomic_load_explicit (const shared_ptr< _Ty > *_Ptr, memory_order)
 
template<class _Ty >
shared_ptr< _Ty > atomic_load (const shared_ptr< _Ty > *_Ptr)
 
template<class _Ty >
void atomic_store_explicit (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > _Other, memory_order)
 
template<class _Ty >
void atomic_store (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > _Other)
 
template<class _Ty >
shared_ptr< _Ty > atomic_exchange_explicit (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > _Other, memory_order)
 
template<class _Ty >
shared_ptr< _Ty > atomic_exchange (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > _Other)
 
template<class _Ty >
bool atomic_compare_exchange_weak_explicit (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > *_Exp, shared_ptr< _Ty > _Value, memory_order, memory_order)
 
template<class _Ty >
bool atomic_compare_exchange_weak (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > *_Exp, shared_ptr< _Ty > _Value)
 
template<class _Ty >
bool atomic_compare_exchange_strong_explicit (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > *_Exp, shared_ptr< _Ty > _Value, memory_order, memory_order)
 
template<class _Ty >
bool atomic_compare_exchange_strong (shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > *_Exp, shared_ptr< _Ty > _Value)
 

Macro Definition Documentation

#define _MEMORY_

Typedef Documentation

Enumeration Type Documentation

enum pointer_safety
strong
Enumerator
relaxed 
preferred 
strict 
2244  { // return codes for get_pointer_safety
2245  relaxed,
2246  preferred,
2247  strict
2248  };

Function Documentation

template<class _Ty1 , class _Ty2 >
void _Do_enable ( _Ty1 *  _Ptr,
enable_shared_from_this< _Ty2 > *  _Es,
_Ref_count_base _Refptr 
)
inline
1583  { // reset internal weak pointer
1584  _Es->_Wptr._Resetw(_Ptr, _Refptr);
1585  }
weak_ptr< _Ty > _Wptr
Definition: memory:1574
template<class _Ty >
void _Enable_shared ( _Ty *  _Ptr,
_Ref_count_base _Refptr,
typename _Ty::_EStype *  = 0 
)
inline
677  { // reset internal weak pointer
678  if (_Ptr)
679  _Do_enable(_Ptr,
681  }
void _Do_enable(_Ty1 *, enable_shared_from_this< _Ty2 > *, _Ref_count_base *)
Definition: memory:1579
Definition: memory:667
void _Enable_shared ( const volatile void ,
const volatile void  
)
inline
684  { // not derived from enable_shared_from_this; do nothing
685  }
_EXTERN_C _CRTIMP2_PURE void __cdecl _Lock_shared_ptr_spin_lock ( )
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt _Uninitialized_copy_n_unchecked ( _InIt  _First,
_Diff  _Count,
_FwdIt  _Dest 
)
inline
117  { // copy [_First, _First + _Count) to [_Dest, ...), choose optimization
119  _Dest, _Ptr_copy_cat(_First, _Dest)));
120  }
unsigned _Dest
Definition: mbstring.h:107
_FwdIt _Uninitialized_copy_n_unchecked1(_InIt _First, _Diff _Count, _FwdIt _Dest, _General_ptr_iterator_tag)
Definition: memory:79
_Diff _Count
Definition: algorithm:1941
_General_ptr_iterator_tag _Ptr_copy_cat(const _Source &, const _Dest &)
Definition: xutility:864
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt _Uninitialized_copy_n_unchecked1 ( _InIt  _First,
_Diff  _Count,
_FwdIt  _Dest,
_General_ptr_iterator_tag   
)
inline
81  { // copy [_First, _First + _Count) to [_Dest, ...), no special optimization
82  _FwdIt _Next = _Dest;
83 
85  for (; 0 < _Count; --_Count, (void)++_Dest, ++_First)
86  {
87  _Construct_in_place(*_Dest, *_First);
88  }
89 
91  _Destroy_range(_Next, _Dest);
92  _RERAISE;
94 
95  return (_Dest);
96  }
void _Destroy_range(_Ptr _First, _Ptr _Last, _Wrap_alloc< _Alloc > &_Al)
Definition: xmemory0:1213
void _Construct_in_place(_Ty &_Obj, _Types &&..._Args)
Definition: xmemory0:146
unsigned _Dest
Definition: mbstring.h:107
#define _TRY_BEGIN
Definition: xstddef:26
#define _CATCH_END
Definition: xstddef:29
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
#define _CATCH_ALL
Definition: xstddef:28
_Diff _Count
Definition: algorithm:1941
#define _RERAISE
Definition: xstddef:32
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt _Uninitialized_copy_n_unchecked1 ( _InIt  _First,
_Diff  _Count,
_FwdIt  _Dest,
_Really_trivial_ptr_iterator_tag   
)
inline
103  { // copy [_First, _First + _Count) to [_Dest, ...), memmove optimization
104  if (0 < _Count)
105  {
106  return (_Copy_memmove(_First, _First + _Count, _Dest));
107  }
108 
109  return (_Dest);
110  }
unsigned _Dest
Definition: mbstring.h:107
_OutIt _Copy_memmove(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2293
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _FwdIt >
_STD_BEGIN _FwdIt _Uninitialized_copy_unchecked ( _InIt  _First,
_InIt  _Last,
_FwdIt  _Dest,
_General_ptr_iterator_tag   
)
inline
23  { // copy [_First, _Last) to raw [_Dest, ...), no special optimization
24  _FwdIt _Next = _Dest;
25 
27  for (; _First != _Last; ++_Dest, (void)++_First)
28  {
29  _Construct_in_place(*_Dest, *_First);
30  }
31 
33  _Destroy_range(_Next, _Dest);
34  _RERAISE;
36 
37  return (_Dest);
38  }
void _Destroy_range(_Ptr _First, _Ptr _Last, _Wrap_alloc< _Alloc > &_Al)
Definition: xmemory0:1213
void _Construct_in_place(_Ty &_Obj, _Types &&..._Args)
Definition: xmemory0:146
unsigned _Dest
Definition: mbstring.h:107
#define _TRY_BEGIN
Definition: xstddef:26
#define _CATCH_END
Definition: xstddef:29
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
#define _CATCH_ALL
Definition: xstddef:28
#define _RERAISE
Definition: xstddef:32
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _FwdIt >
_FwdIt _Uninitialized_copy_unchecked ( _InIt  _First,
_InIt  _Last,
_FwdIt  _Dest,
_Really_trivial_ptr_iterator_tag   
)
inline
44  { // copy [_First, _Last) to raw [_Dest, ...), memmove optimization
45  return (_Copy_memmove(_First, _Last, _Dest));
46  }
unsigned _Dest
Definition: mbstring.h:107
_OutIt _Copy_memmove(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2293
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Diff , class _Tval >
_FwdIt _Uninitialized_fill_n_unchecked ( _FwdIt  _First,
_Diff  _Count,
const _Tval &  _Val,
false_type   
)
inline
217  { // copy _Count copies of _Val to raw _First, no special optimization
218  _FwdIt _Next = _First;
219 
220  _TRY_BEGIN
221  for (; 0 < _Count; --_Count, (void)++_First)
222  {
223  _Construct_in_place(*_First, _Val);
224  }
225 
226  _CATCH_ALL
227  _Destroy_range(_Next, _First);
228  _RERAISE;
229  _CATCH_END
230 
231  return (_First);
232  }
void _Destroy_range(_Ptr _First, _Ptr _Last, _Wrap_alloc< _Alloc > &_Al)
Definition: xmemory0:1213
void _Construct_in_place(_Ty &_Obj, _Types &&..._Args)
Definition: xmemory0:146
#define _TRY_BEGIN
Definition: xstddef:26
#define _CATCH_END
Definition: xstddef:29
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
#define _CATCH_ALL
Definition: xstddef:28
_Diff _Count
Definition: algorithm:1941
#define _RERAISE
Definition: xstddef:32
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _FwdIt , class _Diff , class _Tval >
_FwdIt _Uninitialized_fill_n_unchecked ( _FwdIt  _First,
_Diff  _Count,
const _Tval &  _Val,
true_type   
)
inline
238  { // copy _Count copies of _Val to raw _First, memset optimization
239  if (0 < _Count)
240  {
241  _CSTD memset(_First, _Val, _Count);
242  return (_First + _Count);
243  }
244 
245  return (_First);
246  }
_Diff _Count
Definition: algorithm:1941
#define _CSTD
Definition: yvals.h:570
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _FwdIt , class _Tval >
void _Uninitialized_fill_unchecked ( _FwdIt  _First,
_FwdIt  _Last,
const _Tval &  _Val,
false_type   
)
inline
179  { // copy _Val throughout raw [_First, _Last), no special optimization
180  _FwdIt _Next = _First;
181 
182  _TRY_BEGIN
183  for (; _First != _Last; ++_First)
184  {
185  _Construct_in_place(*_First, _Val);
186  }
187 
188  _CATCH_ALL
189  _Destroy_range(_Next, _First);
190  _RERAISE;
191  _CATCH_END
192  }
void _Destroy_range(_Ptr _First, _Ptr _Last, _Wrap_alloc< _Alloc > &_Al)
Definition: xmemory0:1213
void _Construct_in_place(_Ty &_Obj, _Types &&..._Args)
Definition: xmemory0:146
#define _TRY_BEGIN
Definition: xstddef:26
#define _CATCH_END
Definition: xstddef:29
#define _CATCH_ALL
Definition: xstddef:28
#define _RERAISE
Definition: xstddef:32
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Tval >
void _Uninitialized_fill_unchecked ( _FwdIt  _First,
_FwdIt  _Last,
const _Tval &  _Val,
true_type   
)
inline
197  { // copy _Val throughout raw [_First, _Last), memset optimization
198  _CSTD memset(_First, _Val, _Last - _First);
199  }
#define _CSTD
Definition: yvals.h:570
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
_CRTIMP2_PURE void __cdecl _Unlock_shared_ptr_spin_lock ( )
void* align ( size_t  _Bound,
size_t  _Size,
void *&  _Ptr,
size_t _Space 
)
inline
2411  { // try to carve out _Size bytes on boundary _Bound
2412  size_t _Off = (size_t)((uintptr_t)_Ptr & (_Bound - 1));
2413  if (0 < _Off)
2414  _Off = _Bound - _Off; // number of bytes to skip
2415  if (_Space < _Off || _Space - _Off < _Size)
2416  return (0);
2417  else
2418  { // enough room, update
2419  _Ptr = (char *)_Ptr + _Off;
2420  _Space -= _Off;
2421  return (_Ptr);
2422  }
2423  }
unsigned int size_t
Definition: sourceannotations.h:19
_CRT_BEGIN_C_HEADER _Check_return_ _Ret_maybenull_ _In_ size_t _Size
Definition: corecrt_malloc.h:58
unsigned int uintptr_t
Definition: vadefs.h:30
template<class _Ty , class _Alloc , class... _Types>
shared_ptr<_Ty> allocate_shared ( const _Alloc &  _Al_arg,
_Types &&...  _Args 
)
inline
1397  { // make a shared_ptr
1398  typedef _Ref_count_obj_alloc<_Ty, _Alloc> _Refoa;
1399  typedef _Wrap_alloc<_Alloc> _Alref0;
1400  typename _Alref0::template rebind<_Refoa>::other _Alref(_Al_arg);
1401 
1402  const auto _Rx = _Alref.allocate(1);
1403 
1404  _TRY_BEGIN
1405  _Alref.construct(_Unfancy(_Rx), _Al_arg, _STD forward<_Types>(_Args)...);
1406  _CATCH_ALL
1407  _Alref.deallocate(_Rx, 1);
1408  _RERAISE;
1409  _CATCH_END
1410 
1411  shared_ptr<_Ty> _Ret;
1412  _Ret._Resetp0(_Rx->_Getptr(), _Unfancy(_Rx));
1413  return (_Ret);
1414  }
Definition: memory:1340
#define _TRY_BEGIN
Definition: xstddef:26
#define _CATCH_END
Definition: xstddef:29
void _Resetp0(_Ux *_Px, _Ref_count_base *_Rx)
Definition: memory:1126
Definition: memory:665
#define _CATCH_ALL
Definition: xstddef:28
Definition: xmemory0:483
auto _Unfancy(_Ptrty _Ptr)
Definition: xstddef:635
#define _RERAISE
Definition: xstddef:32
template<class _Ty >
bool atomic_compare_exchange_strong ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty > *  _Exp,
shared_ptr< _Ty >  _Value 
)
inline
2539  { // atomically compare and exchange
2540  return (_STD atomic_compare_exchange_strong_explicit(_Ptr, _Exp, _STD move(_Value),
2542  }
bool atomic_compare_exchange_strong_explicit(shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > *_Exp, shared_ptr< _Ty > _Value, memory_order, memory_order)
Definition: memory:2527
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
Definition: xatomic0.h:22
template<class _Ty >
bool atomic_compare_exchange_strong_explicit ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty > *  _Exp,
shared_ptr< _Ty >  _Value,
memory_order  ,
memory_order   
)
inline
2530  { // atomically compare and exchange
2531  return (_STD atomic_compare_exchange_weak_explicit(_Ptr, _Exp, _STD move(_Value),
2533  }
bool atomic_compare_exchange_weak_explicit(shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > *_Exp, shared_ptr< _Ty > _Value, memory_order, memory_order)
Definition: memory:2498
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
Definition: xatomic0.h:22
template<class _Ty >
bool atomic_compare_exchange_weak ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty > *  _Exp,
shared_ptr< _Ty >  _Value 
)
inline
2521  { // atomically compare and exchange
2522  return (_STD atomic_compare_exchange_weak_explicit(_Ptr, _Exp, _STD move(_Value),
2524  }
bool atomic_compare_exchange_weak_explicit(shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > *_Exp, shared_ptr< _Ty > _Value, memory_order, memory_order)
Definition: memory:2498
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
Definition: xatomic0.h:22
template<class _Ty >
bool atomic_compare_exchange_weak_explicit ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty > *  _Exp,
shared_ptr< _Ty >  _Value,
memory_order  ,
memory_order   
)
inline
2501  { // atomically compare and exchange
2502  shared_ptr<_Ty> _Old_exp; // destroyed outside spin lock
2503  _Shared_ptr_spin_lock _Lock;
2504  bool _Success = _Ptr->get() == _Exp->get()
2505  && !_Ptr->owner_before(*_Exp)
2506  && !_Exp->owner_before(*_Ptr);
2507  if (_Success)
2508  _Ptr->swap(_Value);
2509  else
2510  { // match failed
2511  _Exp->swap(_Old_exp);
2512  *_Exp = *_Ptr;
2513  }
2514  return (_Success);
2515  }
void swap(_Myt &_Other) _NOEXCEPT
Definition: memory:1051
bool owner_before(const _Ptr_base< _Ty2 > &_Right) const
Definition: memory:738
Definition: memory:2432
Definition: memory:665
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty >
shared_ptr<_Ty> atomic_exchange ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty >  _Other 
)
inline
2493  { // copy _Other to *_Ptr and return previous value of *_Ptr atomically
2494  return (_STD atomic_exchange_explicit(_Ptr, _STD move(_Other), memory_order_seq_cst));
2495  }
shared_ptr< _Ty > atomic_exchange_explicit(shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > _Other, memory_order)
Definition: memory:2481
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
Definition: xatomic0.h:22
template<class _Ty >
shared_ptr<_Ty> atomic_exchange_explicit ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty >  _Other,
memory_order   
)
inline
2484  { // copy _Other to *_Ptr and return previous value of *_Ptr atomically
2485  _Shared_ptr_spin_lock _Lock;
2486  _Ptr->swap(_Other);
2487  return (_Other);
2488  }
void swap(_Myt &_Other) _NOEXCEPT
Definition: memory:1051
Definition: memory:2432
template<class _Ty >
bool atomic_is_lock_free ( const shared_ptr< _Ty > *  )
inline
2447  { // return true if atomic operations on shared_ptr<_Ty> are lock-free
2448  return (false);
2449  }
template<class _Ty >
shared_ptr<_Ty> atomic_load ( const shared_ptr< _Ty > *  _Ptr)
inline
2462  { // load *_Ptr atomically
2464  }
shared_ptr< _Ty > atomic_load_explicit(const shared_ptr< _Ty > *_Ptr, memory_order)
Definition: memory:2452
Definition: xatomic0.h:22
template<class _Ty >
shared_ptr<_Ty> atomic_load_explicit ( const shared_ptr< _Ty > *  _Ptr,
memory_order   
)
inline
2454  { // load *_Ptr atomically
2455  _Shared_ptr_spin_lock _Lock;
2456  shared_ptr<_Ty> _Result = *_Ptr;
2457  return (_Result);
2458  }
Definition: memory:2432
Definition: memory:665
_Result
Definition: corecrt_wconio.h:362
template<class _Ty >
void atomic_store ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty >  _Other 
)
inline
2476  { // store _Other to *_Ptr atomically
2478  }
void atomic_store_explicit(shared_ptr< _Ty > *_Ptr, shared_ptr< _Ty > _Other, memory_order)
Definition: memory:2467
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
Definition: xatomic0.h:22
template<class _Ty >
void atomic_store_explicit ( shared_ptr< _Ty > *  _Ptr,
shared_ptr< _Ty >  _Other,
memory_order   
)
inline
2469  { // store _Other to *_Ptr atomically
2470  _Shared_ptr_spin_lock _Lock;
2471  _Ptr->swap(_Other);
2472  }
void swap(_Myt &_Other) _NOEXCEPT
Definition: memory:1051
Definition: memory:2432
template<class _Ty1 , class _Ty2 >
shared_ptr<_Ty1> const_pointer_cast ( const shared_ptr< _Ty2 > &  _Other)
1278  { // return shared_ptr object holding const_cast<_Ty1 *>(_Other.get())
1279  typedef typename shared_ptr<_Ty1>::element_type _Elem1;
1280  _Elem1 *_Ptr = const_cast<_Elem1 *>(_Other.get());
1281  return (shared_ptr<_Ty1>(_Other, _Ptr));
1282  }
_Ty element_type
Definition: memory:693
Definition: memory:665
_Ty * get() const _NOEXCEPT
Definition: memory:1056
void declare_no_pointers ( char ,
size_t   
)
inline
2263  { // declare region to be pointer free
2264  }
void declare_reachable ( void )
inline
2253  { // increment pointer reachable count
2254  }
template<class _Ty1 , class _Ty2 >
shared_ptr<_Ty1> dynamic_pointer_cast ( const shared_ptr< _Ty2 > &  _Other)
1288  { // return shared_ptr object holding dynamic_cast<_Ty1 *>(_Other.get())
1289  typedef typename shared_ptr<_Ty1>::element_type _Elem1;
1290  _Elem1 *_Ptr = dynamic_cast<_Elem1 *>(_Other.get());
1291  if (_Ptr)
1292  return (shared_ptr<_Ty1>(_Other, _Ptr));
1293  else
1294  return (shared_ptr<_Ty1>());
1295  }
_Ty element_type
Definition: memory:693
Definition: memory:665
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Dx , class _Ty >
_Dx* get_deleter ( const shared_ptr< _Ty > &  _Sx)
1300  { // return pointer to shared_ptr's deleter object if its type is _Ty
1301  return ((_Dx *)_Sx._Get_deleter(typeid(_Dx)));
1302  }
void * _Get_deleter(const type_info &_Typeid) const _NOEXCEPT
Definition: memory:743
_Pointer_safety get_pointer_safety ( )
inline
2271  { // get pointer safety status
2272  return (pointer_safety::relaxed);
2273  }
template<class _Ty , class... _Types>
shared_ptr<_Ty> make_shared ( _Types &&...  _Args)
inline
1382  { // make a shared_ptr
1383  _Ref_count_obj<_Ty> *_Rx =
1384  new _Ref_count_obj<_Ty>(_STD forward<_Types>(_Args)...);
1385 
1386  shared_ptr<_Ty> _Ret;
1387  _Ret._Resetp0(_Rx->_Getptr(), _Rx);
1388  return (_Ret);
1389  }
void _Resetp0(_Ux *_Px, _Ref_count_base *_Rx)
Definition: memory:1126
Definition: memory:665
Definition: memory:1306
template<class _Ty , class... _Types>
enable_if<!is_array<_Ty>::value, unique_ptr<_Ty> >::type make_unique ( _Types &&...  _Args)
inline
2053  { // make a unique_ptr
2054  return (unique_ptr<_Ty>(new _Ty(_STD forward<_Types>(_Args)...)));
2055  }
Definition: memory:455
template<class _Ty >
enable_if<is_array<_Ty>::value && extent<_Ty>::value == 0, unique_ptr<_Ty> >::type make_unique ( size_t  _Size)
inline
2060  { // make a unique_ptr
2061  typedef typename remove_extent<_Ty>::type _Elem;
2062  return (unique_ptr<_Ty>(new _Elem[_Size]()));
2063  }
_CRT_BEGIN_C_HEADER _Check_return_ _Ret_maybenull_ _In_ size_t _Size
Definition: corecrt_malloc.h:58
_Ty type
Definition: type_traits:196
Definition: memory:455
template<class _Ty , class... _Types>
enable_if<extent<_Ty>::value != 0, void>::type make_unique ( _Types &&  ...)
delete
template<class _Ty1 , class _Ty2 >
bool operator!= ( const shared_ptr< _Ty1 > &  _Left,
const shared_ptr< _Ty2 > &  _Right 
)
1143  { // test if shared_ptr != shared_ptr
1144  return (!(_Left == _Right));
1145  }
template<class _Ty >
bool operator!= ( const shared_ptr< _Ty > &  _Left,
nullptr_t   
)
1191  { // test if shared_ptr != nullptr
1192  return (!(_Left == nullptr_t{}));
1193  }
template<class _Ty >
bool operator!= ( nullptr_t  ,
const shared_ptr< _Ty > &  _Right 
)
1197  { // test if nullptr != shared_ptr
1198  return (!(nullptr_t{} == _Right));
1199  }
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator!= ( const unique_ptr< _Ty1, _Dx1 > &  _Left,
const unique_ptr< _Ty2, _Dx2 > &  _Right 
)
2096  { // test if unique_ptr _Left doesn't equal _Right
2097  return (!(_Left == _Right));
2098  }
template<class _Ty , class _Dx >
bool operator!= ( const unique_ptr< _Ty, _Dx > &  _Left,
nullptr_t  _Right 
)
2164  { // test if unique_ptr != nullptr
2165  return (!(_Left == _Right));
2166  }
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty , class _Dx >
bool operator!= ( nullptr_t  _Left,
const unique_ptr< _Ty, _Dx > &  _Right 
)
2172  { // test if nullptr != unique_ptr
2173  return (!(_Left == _Right));
2174  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
template<class _Ty1 , class _Ty2 >
bool operator< ( const shared_ptr< _Ty1 > &  _Left,
const shared_ptr< _Ty2 > &  _Right 
)
1150  { // test if shared_ptr < shared_ptr
1151  return (less<decltype(_Always_false<_Ty1>::value
1152  ? _Left.get() : _Right.get())>()(
1153  _Left.get(), _Right.get()));
1154  }
Definition: xstddef:226
_Ty * get() const _NOEXCEPT
Definition: memory:1056
Definition: xstddef:139
template<class _Ty >
bool operator< ( const shared_ptr< _Ty > &  _Left,
nullptr_t   
)
1203  { // test if shared_ptr < nullptr
1204  return (less<_Ty *>()(_Left.get(), nullptr_t{}));
1205  }
Definition: xstddef:226
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty >
bool operator< ( nullptr_t  ,
const shared_ptr< _Ty > &  _Right 
)
1209  { // test if nullptr < shared_ptr
1210  return (less<_Ty *>()(nullptr_t{}, _Right.get()));
1211  }
Definition: xstddef:226
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator< ( const unique_ptr< _Ty1, _Dx1 > &  _Left,
const unique_ptr< _Ty2, _Dx2 > &  _Right 
)
2106  { // test if unique_ptr _Left precedes _Right
2107  typedef typename unique_ptr<_Ty1, _Dx1>::pointer _Ptr1;
2108  typedef typename unique_ptr<_Ty2, _Dx2>::pointer _Ptr2;
2109  typedef typename common_type<_Ptr1, _Ptr2>::type _Common;
2110  return (less<_Common>()(_Left.get(), _Right.get()));
2111 
2112  }
Definition: xstddef:226
pointer get() const _NOEXCEPT
Definition: memory:1832
_Mybase::pointer pointer
Definition: memory:1705
Definition: type_traits:1236
template<class _Ty , class _Dx >
bool operator< ( const unique_ptr< _Ty, _Dx > &  _Left,
nullptr_t  _Right 
)
2180  { // test if unique_ptr < nullptr
2181  typedef typename unique_ptr<_Ty, _Dx>::pointer _Ptr;
2182  return (less<_Ptr>()(_Left.get(), _Right));
2183  }
Definition: xstddef:226
pointer get() const _NOEXCEPT
Definition: memory:1832
_Mybase::pointer pointer
Definition: memory:1705
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty , class _Dx >
bool operator< ( nullptr_t  _Left,
const unique_ptr< _Ty, _Dx > &  _Right 
)
2189  { // test if nullptr < unique_ptr
2190  typedef typename unique_ptr<_Ty, _Dx>::pointer _Ptr;
2191  return (less<_Ptr>()(_Left, _Right.get()));
2192  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
Definition: xstddef:226
pointer get() const _NOEXCEPT
Definition: memory:1832
_Mybase::pointer pointer
Definition: memory:1705
template<class _Elem , class _Traits , class _Ty >
basic_ostream<_Elem, _Traits>& operator<< ( basic_ostream< _Elem, _Traits > &  _Out,
const shared_ptr< _Ty > &  _Px 
)
1254  { // write contained pointer to stream
1255  return (_Out << _Px.get());
1256  }
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty1 , class _Ty2 >
bool operator<= ( const shared_ptr< _Ty1 > &  _Left,
const shared_ptr< _Ty2 > &  _Right 
)
1173  { // test if shared_ptr <= shared_ptr
1174  return (!(_Right < _Left));
1175  }
template<class _Ty >
bool operator<= ( const shared_ptr< _Ty > &  _Left,
nullptr_t   
)
1239  { // test if shared_ptr <= nullptr
1240  return (!(nullptr_t{} < _Left));
1241  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
template<class _Ty >
bool operator<= ( nullptr_t  ,
const shared_ptr< _Ty > &  _Right 
)
1245  { // test if nullptr <= shared_ptr
1246  return (!(_Right < nullptr_t{}));
1247  }
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator<= ( const unique_ptr< _Ty1, _Dx1 > &  _Left,
const unique_ptr< _Ty2, _Dx2 > &  _Right 
)
2140  { // test if unique_ptr _Right doesn't precede _Left
2141  return (!(_Right < _Left));
2142  }
template<class _Ty , class _Dx >
bool operator<= ( const unique_ptr< _Ty, _Dx > &  _Left,
nullptr_t  _Right 
)
2230  { // test if unique_ptr <= nullptr
2231  return (!(_Right < _Left));
2232  }
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty , class _Dx >
bool operator<= ( nullptr_t  _Left,
const unique_ptr< _Ty, _Dx > &  _Right 
)
2238  { // test if nullptr <= unique_ptr
2239  return (!(_Right < _Left));
2240  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
template<class _Ty1 , class _Ty2 >
bool operator== ( const shared_ptr< _Ty1 > &  _Left,
const shared_ptr< _Ty2 > &  _Right 
)
1136  { // test if shared_ptr == shared_ptr
1137  return (_Left.get() == _Right.get());
1138  }
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty >
bool operator== ( const shared_ptr< _Ty > &  _Left,
nullptr_t   
)
1179  { // test if shared_ptr == nullptr
1180  return (_Left.get() == nullptr_t{});
1181  }
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty >
bool operator== ( nullptr_t  ,
const shared_ptr< _Ty > &  _Right 
)
1185  { // test if nullptr == shared_ptr
1186  return (nullptr_t{} == _Right.get());
1187  }
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator== ( const unique_ptr< _Ty1, _Dx1 > &  _Left,
const unique_ptr< _Ty2, _Dx2 > &  _Right 
)
2086  { // test if unique_ptr _Left equals _Right
2087  return (_Left.get() == _Right.get());
2088  }
pointer get() const _NOEXCEPT
Definition: memory:1832
template<class _Ty , class _Dx >
bool operator== ( const unique_ptr< _Ty, _Dx > &  _Left,
nullptr_t   
)
2148  { // test if unique_ptr == nullptr
2149  return (!_Left);
2150  }
template<class _Ty , class _Dx >
bool operator== ( nullptr_t  ,
const unique_ptr< _Ty, _Dx > &  _Right 
)
2156  { // test if nullptr == unique_ptr
2157  return (!_Right);
2158  }
template<class _Ty1 , class _Ty2 >
bool operator> ( const shared_ptr< _Ty1 > &  _Left,
const shared_ptr< _Ty2 > &  _Right 
)
1166  { // test if shared_ptr > shared_ptr
1167  return (_Right < _Left);
1168  }
template<class _Ty >
bool operator> ( const shared_ptr< _Ty > &  _Left,
nullptr_t   
)
1227  { // test if shared_ptr > nullptr
1228  return (nullptr_t{} < _Left);
1229  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
template<class _Ty >
bool operator> ( nullptr_t  ,
const shared_ptr< _Ty > &  _Right 
)
1233  { // test if nullptr > shared_ptr
1234  return (_Right < nullptr_t{});
1235  }
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator> ( const unique_ptr< _Ty1, _Dx1 > &  _Left,
const unique_ptr< _Ty2, _Dx2 > &  _Right 
)
2130  { // test if unique_ptr _Right precedes _Left
2131  return (_Right < _Left);
2132  }
template<class _Ty , class _Dx >
bool operator> ( const unique_ptr< _Ty, _Dx > &  _Left,
nullptr_t  _Right 
)
2214  { // test if unique_ptr > nullptr
2215  return (_Right < _Left);
2216  }
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty , class _Dx >
bool operator> ( nullptr_t  _Left,
const unique_ptr< _Ty, _Dx > &  _Right 
)
2222  { // test if nullptr > unique_ptr
2223  return (_Right < _Left);
2224  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
template<class _Ty1 , class _Ty2 >
bool operator>= ( const shared_ptr< _Ty1 > &  _Left,
const shared_ptr< _Ty2 > &  _Right 
)
1159  { // shared_ptr >= shared_ptr
1160  return (!(_Left < _Right));
1161  }
template<class _Ty >
bool operator>= ( const shared_ptr< _Ty > &  _Left,
nullptr_t   
)
1215  { // test if shared_ptr >= nullptr
1216  return (!(_Left < nullptr_t{}));
1217  }
template<class _Ty >
bool operator>= ( nullptr_t  ,
const shared_ptr< _Ty > &  _Right 
)
1221  { // test if nullptr >= shared_ptr
1222  return (!(nullptr_t{} < _Right));
1223  }
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty1 , class _Dx1 , class _Ty2 , class _Dx2 >
bool operator>= ( const unique_ptr< _Ty1, _Dx1 > &  _Left,
const unique_ptr< _Ty2, _Dx2 > &  _Right 
)
2120  { // test if unique_ptr _Left doesn't precede _Right
2121  return (!(_Left < _Right));
2122  }
template<class _Ty , class _Dx >
bool operator>= ( const unique_ptr< _Ty, _Dx > &  _Left,
nullptr_t  _Right 
)
2198  { // test if unique_ptr >= nullptr
2199  return (!(_Left < _Right));
2200  }
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty , class _Dx >
bool operator>= ( nullptr_t  _Left,
const unique_ptr< _Ty, _Dx > &  _Right 
)
2206  { // test if nullptr >= unique_ptr
2207  return (!(_Left < _Right));
2208  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
template<class _Ty1 , class _Ty2 >
shared_ptr<_Ty1> static_pointer_cast ( const shared_ptr< _Ty2 > &  _Other)
1268  { // return shared_ptr object holding static_cast<_Ty1 *>(_Other.get())
1269  typedef typename shared_ptr<_Ty1>::element_type _Elem1;
1270  _Elem1 *_Ptr = static_cast<_Elem1 *>(_Other.get());
1271  return (shared_ptr<_Ty1>(_Other, _Ptr));
1272  }
_Ty element_type
Definition: memory:693
Definition: memory:665
_Ty * get() const _NOEXCEPT
Definition: memory:1056
template<class _Ty >
void swap ( shared_ptr< _Ty > &  _Left,
shared_ptr< _Ty > &  _Right 
)
1260  { // swap _Left and _Right shared_ptrs
1261  _Left.swap(_Right);
1262  }
void swap(_Myt &_Other) _NOEXCEPT
Definition: memory:1051
template<class _Ty >
void swap ( weak_ptr< _Ty > &  _W1,
weak_ptr< _Ty > &  _W2 
)
1526  { // swap contents of _W1 and _W2
1527  _W1.swap(_W2);
1528  }
void swap(weak_ptr &_Other) _NOEXCEPT
Definition: memory:1508
template<class _Ty , class _Dx , class = enable_if_t<_Is_swappable<_Dx>::value>>
void swap ( unique_ptr< _Ty, _Dx > &  _Left,
unique_ptr< _Ty, _Dx > &  _Right 
)
2076  { // swap _Left with _Right
2077  _Left.swap(_Right);
2078  }
void swap(_Myt &_Right) _NOEXCEPT
Definition: memory:1809
void undeclare_no_pointers ( char ,
size_t   
)
inline
2267  { // undeclare region to be pointer free
2268  }
template<class _Ty >
_Ty* undeclare_reachable ( _Ty *  _Ptr)
inline
2258  { // decrement pointer reachable count
2259  return (_Ptr);
2260  }
template<class _InIt , class _FwdIt >
_FwdIt uninitialized_copy ( _InIt  _First,
_InIt  _Last,
_FwdIt  _Dest 
)
inline
52  { // copy [_First, _Last) to raw [_Dest, ...)
54  _DEBUG_RANGE(_First, _Last);
55  const auto _UFirst = _Unchecked(_First);
56  const auto _ULast = _Unchecked(_Last);
57  const auto _UDest = _Unchecked_n(_Dest, _Idl_distance(_UFirst, _ULast));
58  return (_Rechecked(_Dest,
59  _Uninitialized_copy_unchecked(_UFirst, _ULast, _UDest, _Ptr_copy_cat(_UFirst, _UDest))));
60  }
_STD_BEGIN _FwdIt _Uninitialized_copy_unchecked(_InIt _First, _InIt _Last, _FwdIt _Dest, _General_ptr_iterator_tag)
Definition: memory:21
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
_Deque_const_iterator< _Mydeque > & _Rechecked(_Deque_const_iterator< _Mydeque > &_Iter, typename _Deque_const_iterator< _Mydeque >::_Unchecked_type _Right)
Definition: deque:527
unsigned _Dest
Definition: mbstring.h:107
_FwdIt uninitialized_copy(_InIt _First, _InIt _Last, _FwdIt _Dest)
Definition: memory:50
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Distance_unknown _Idl_distance(const _Iter &, const _Iter &)
Definition: xutility:681
_General_ptr_iterator_tag _Ptr_copy_cat(const _Source &, const _Dest &)
Definition: xutility:864
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Diff , class _FwdIt >
_FwdIt uninitialized_copy_n ( _InIt  _First,
_Diff  _Count,
_FwdIt  _Dest 
)
inline
127  { // copy [_First, _First + _Count) to [_Dest, ...)
128  // Note that we _DEPRECATE_UNCHECKED _Dest because _Count logically goes with _First
130  return (_Rechecked(_Dest,
132  }
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
_Deque_const_iterator< _Mydeque > & _Rechecked(_Deque_const_iterator< _Mydeque > &_Iter, typename _Deque_const_iterator< _Mydeque >::_Unchecked_type _Right)
Definition: deque:527
unsigned _Dest
Definition: mbstring.h:107
_FwdIt _Uninitialized_copy_n_unchecked(_InIt _First, _Diff _Count, _FwdIt _Dest)
Definition: memory:115
_FwdIt uninitialized_copy_n(_InIt _First, _Diff _Count, _FwdIt _Dest)
Definition: memory:125
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Diff _Count
Definition: algorithm:1941
template<class _FwdIt , class _Tval >
void uninitialized_fill ( _FwdIt  _First,
_FwdIt  _Last,
const _Tval &  _Val 
)
inline
204  { // copy _Val throughout raw [_First, _Last)
205  _DEBUG_RANGE(_First, _Last);
206  const auto _UFirst = _Unchecked(_First);
207  const auto _ULast = _Unchecked(_Last);
208  _Uninitialized_fill_unchecked(_UFirst, _ULast, _Val, _Fill_memset_is_safe(_UFirst, _Val));
209  }
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_Fill_memset_is_safe_helper< _FwdIt, _Ty >::type _Fill_memset_is_safe(const _FwdIt &, const _Ty &)
Definition: xutility:2680
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
void _Uninitialized_fill_unchecked(_FwdIt _First, _FwdIt _Last, const _Tval &_Val, false_type)
Definition: memory:178
template<class _FwdIt , class _Diff , class _Tval >
_FwdIt uninitialized_fill_n ( _FwdIt  _First,
_Diff  _Count,
const _Tval &  _Val 
)
inline
253  { // copy _Count copies of _Val to raw _First
254  const auto _UFirst = _Unchecked_n(_First, _Count);
255  return (_Rechecked(_First,
257  }
_Deque_const_iterator< _Mydeque > & _Rechecked(_Deque_const_iterator< _Mydeque > &_Iter, typename _Deque_const_iterator< _Mydeque >::_Unchecked_type _Right)
Definition: deque:527
_FwdIt _Uninitialized_fill_n_unchecked(_FwdIt _First, _Diff _Count, const _Tval &_Val, false_type)
Definition: memory:216
_Fill_memset_is_safe_helper< _FwdIt, _Ty >::type _Fill_memset_is_safe(const _FwdIt &, const _Ty &)
Definition: xutility:2680
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Diff _Count
Definition: algorithm:1941
_FwdIt const _Ty _Val
Definition: algorithm:1938