STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs | Functions
scoped_allocator File Reference
#include <tuple>
#include <xmemory0>

Classes

struct  _Scoped_outermost_helper_tag
 
struct  _Scoped_outermost_helper< _Alloc, class >
 
struct  _Scoped_outermost_helper< _Alloc, void_t< _Scoped_outermost_helper_tag, decltype(_STD declval< _Alloc & >().outer_allocator())> >
 
class  scoped_allocator_adaptor< _Outer, _Inner >
 
struct  _Scoped_base< _Outer, _Inner >
 
struct  _Scoped_base< _Outer, _Inner0, _Inner...>
 
struct  _Scoped_base< _Outer >
 
class  scoped_allocator_adaptor< _Outer, _Inner >
 
struct  scoped_allocator_adaptor< _Outer, _Inner >::rebind< _Other >
 

Macros

#define _SCOPED_ALLOCATOR_
 

Typedefs

template<class _Alloc >
using _Scoped_outermost_t = remove_reference_t< decltype(_Scoped_outermost(_STD declval< _Alloc & >()))>
 
template<class _Alloc >
using _Scoped_outermost_traits = allocator_traits< _Scoped_outermost_t< _Alloc >>
 

Functions

template<class _Alloc >
decltype(auto) _Scoped_outermost (_Alloc &_Al)
 
template<class _Ty , class _Alloc , class... _Atypes>
tuple< _Atypes...> && _Scoped_construct_tuple (_Alloc &, false_type, _Any_tag, tuple< _Atypes...> &&_Val)
 
template<class _Ty , class _Alloc , class... _Atypes>
tuple< allocator_arg_t, _Alloc &, _Atypes...> _Scoped_construct_tuple (_Alloc &_Alty, true_type, true_type, tuple< _Atypes...> &&_Val)
 
template<class _Ty , class _Alloc , class... _Atypes>
tuple< _Atypes..., _Alloc & > _Scoped_construct_tuple (_Alloc &_Alty, true_type, false_type, tuple< _Atypes...> &&_Val)
 
template<class _Outer1 , class _Outer2 , class _Inner1 , class... _Inner>
bool operator== (const scoped_allocator_adaptor< _Outer1, _Inner1, _Inner...> &_Left, const scoped_allocator_adaptor< _Outer2, _Inner1, _Inner...> &_Right) _NOEXCEPT
 
template<class _Outer1 , class _Outer2 >
bool operator== (const scoped_allocator_adaptor< _Outer1 > &_Left, const scoped_allocator_adaptor< _Outer2 > &_Right) _NOEXCEPT
 
template<class _Outer1 , class _Outer2 , class... _Inner>
bool operator!= (const scoped_allocator_adaptor< _Outer1, _Inner...> &_Left, const scoped_allocator_adaptor< _Outer2, _Inner...> &_Right) _NOEXCEPT
 

Macro Definition Documentation

#define _SCOPED_ALLOCATOR_

Typedef Documentation

template<class _Alloc >
using _Scoped_outermost_t = remove_reference_t<decltype(_Scoped_outermost(_STD declval<_Alloc&>()))>
template<class _Alloc >
using _Scoped_outermost_traits = allocator_traits<_Scoped_outermost_t<_Alloc>>

Function Documentation

template<class _Ty , class _Alloc , class... _Atypes>
tuple<_Atypes...>&& _Scoped_construct_tuple ( _Alloc &  ,
false_type  ,
_Any_tag  ,
tuple< _Atypes...> &&  _Val 
)
inline
73  { // construct tuple from tuple argument, no allocator
75  "N4582 20.16.4 [allocator.adaptor.members]/11 requires "
76  "is_constructible<T, Args...> "
77  "when uses_allocator<T, inner_allocator_type> is false");
78  return (_STD move(_Val));
79  }
Definition: type_traits:554
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
template<class _Ty , class _Alloc , class... _Atypes>
tuple<allocator_arg_t, _Alloc&, _Atypes...> _Scoped_construct_tuple ( _Alloc &  _Alty,
true_type  ,
true_type  ,
tuple< _Atypes...> &&  _Val 
)
inline
87  { // construct tuple from tuple argument, leading allocator
88  return (_STD tuple_cat(
90  _STD move(_Val)));
91  }
constexpr allocator_arg_t allocator_arg
Definition: xutility:3777
constexpr _Tuple_cat1< _Tuples...>::type tuple_cat(_Tuples &&..._Tpls)
Definition: tuple:1050
Definition: tuple:220
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
template<class _Ty , class _Alloc , class... _Atypes>
tuple<_Atypes..., _Alloc&> _Scoped_construct_tuple ( _Alloc &  _Alty,
true_type  ,
false_type  ,
tuple< _Atypes...> &&  _Val 
)
inline
99  { // construct tuple from tuple argument, trailing allocator
101  "N4582 20.16.4 [allocator.adaptor.members]/11 requires "
102  "is_constructible<T, allocator_arg_t, inner_allocator_type&, Args...> or "
103  "is_constructible<T, Args..., inner_allocator_type&> "
104  "when uses_allocator<T, inner_allocator_type> is true");
105  return (_STD tuple_cat(_STD move(_Val),
106  tuple<_Alloc&>(_Alty)));
107  }
Definition: type_traits:554
constexpr _Tuple_cat1< _Tuples...>::type tuple_cat(_Tuples &&..._Tpls)
Definition: tuple:1050
Definition: tuple:220
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1349
template<class _Alloc >
decltype(auto) _Scoped_outermost ( _Alloc &  _Al)
inline
49  { // gets the outermost allocator
51  }
Definition: scoped_allocator:26
template<class _Outer1 , class _Outer2 , class... _Inner>
bool operator!= ( const scoped_allocator_adaptor< _Outer1, _Inner...> &  _Left,
const scoped_allocator_adaptor< _Outer2, _Inner...> &  _Right 
)
inline
514  { // compare scoped_allocator_adaptors for equality
515  return (!(_Left == _Right));
516  }
template<class _Outer1 , class _Outer2 , class _Inner1 , class... _Inner>
bool operator== ( const scoped_allocator_adaptor< _Outer1, _Inner1, _Inner...> &  _Left,
const scoped_allocator_adaptor< _Outer2, _Inner1, _Inner...> &  _Right 
)
inline
494  { // compare scoped_allocator_adaptors for equality
495  return (_Left.outer_allocator() == _Right.outer_allocator()
496  && _Left.inner_allocator() == _Right.inner_allocator());
497  }
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:319
inner_allocator_type & inner_allocator() _NOEXCEPT
Definition: scoped_allocator:309
template<class _Outer1 , class _Outer2 >
bool operator== ( const scoped_allocator_adaptor< _Outer1 > &  _Left,
const scoped_allocator_adaptor< _Outer2 > &  _Right 
)
inline
504  { // compare scoped_allocator_adaptors for equality
505  return (_Left.outer_allocator() == _Right.outer_allocator());
506  }
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:319