STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Public Types | Public Member Functions | Private Types | List of all members
scoped_allocator_adaptor< _Outer, _Inner > Class Template Reference
Inheritance diagram for scoped_allocator_adaptor< _Outer, _Inner >:
_Scoped_base< _Outer, _Inner...>

Classes

struct  rebind
 

Public Types

typedef _Outer outer_allocator_type
 
typedef _Mybase::inner_allocator_type inner_allocator_type
 
typedef _Outer_traits::value_type value_type
 
typedef _Outer_traits::pointer pointer
 
typedef _Outer_traits::const_pointer const_pointer
 
typedef _Outer_traits::void_pointer void_pointer
 
typedef _Outer_traits::const_void_pointer const_void_pointer
 
typedef _Outer_traits::size_type size_type
 
typedef _Outer_traits::difference_type difference_type
 
typedef _Scoped_propagate_on_container_copy< _Outermost, _Inner...>::type propagate_on_container_copy_assignment
 
typedef _Scoped_propagate_on_container_move< _Outermost, _Inner...>::type propagate_on_container_move_assignment
 
typedef _Scoped_propagate_on_container_swap< _Outermost, _Inner...>::type propagate_on_container_swap
 
typedef _Scoped_is_always_equal< _Outermost, _Inner...>::type is_always_equal
 

Public Member Functions

outer_allocator_typeouter_allocator () _NOEXCEPT
 
const outer_allocator_typeouter_allocator () const _NOEXCEPT
 
inner_allocator_typeinner_allocator () _NOEXCEPT
 
const inner_allocator_typeinner_allocator () const _NOEXCEPT
 
 scoped_allocator_adaptor ()
 
 scoped_allocator_adaptor (const scoped_allocator_adaptor &_Right) _NOEXCEPT
 
template<class _Other >
 scoped_allocator_adaptor (_Other &&_Other_arg, const _Inner &..._Inner_arg) _NOEXCEPT
 
template<class _Other >
 scoped_allocator_adaptor (const scoped_allocator_adaptor< _Other, _Inner...> &_Right) _NOEXCEPT
 
template<class _Other >
 scoped_allocator_adaptor (scoped_allocator_adaptor< _Other, _Inner...> &&_Right) _NOEXCEPT
 
template<class _Other >
scoped_allocator_adaptoroperator= (scoped_allocator_adaptor< _Other, _Inner...> &&_Right)
 
template<class _Other >
scoped_allocator_adaptoroperator= (const scoped_allocator_adaptor< _Other, _Inner...> &_Right)
 
pointer allocate (size_type _Count)
 
pointer allocate (size_type _Count, const_void_pointer _Hint)
 
void deallocate (pointer _Ptr, size_type _Count)
 
size_type max_size () const
 
template<class _Ty , class... _Types>
void construct (_Ty *_Ptr, _Types &&..._Args)
 
template<class _Ty >
void destroy (_Ty *_Ptr)
 
template<class _Ty1 , class _Ty2 , class _Tpl1 , class _Tpl2 >
void construct (pair< _Ty1, _Ty2 > *_Ptr, piecewise_construct_t, _Tpl1 _Val1, _Tpl2 _Val2)
 
template<class _Ty1 , class _Ty2 >
void construct (pair< _Ty1, _Ty2 > *_Ptr)
 
template<class _Ty1 , class _Ty2 , class _Uy1 , class _Uy2 >
void construct (pair< _Ty1, _Ty2 > *_Ptr, _Uy1 &&_Val1, _Uy2 &&_Val2)
 
template<class _Ty1 , class _Ty2 , class _Uy1 , class _Uy2 >
void construct (pair< _Ty1, _Ty2 > *_Ptr, const pair< _Uy1, _Uy2 > &_Other)
 
template<class _Ty1 , class _Ty2 , class _Uy1 , class _Uy2 >
void construct (pair< _Ty1, _Ty2 > *_Ptr, pair< _Uy1, _Uy2 > &&_Other)
 

Private Types

typedef _Scoped_base< _Outer, _Inner...> _Mybase
 
typedef allocator_traits< _Outer > _Outer_traits
 
typedef _Scoped_outermost_allocator< _Outer >::type _Outermost
 
typedef allocator_traits< _Outermost_Outermost_traits
 

Member Typedef Documentation

template<class _Outer, class... _Inner>
typedef _Scoped_base<_Outer, _Inner...> scoped_allocator_adaptor< _Outer, _Inner >::_Mybase
private
template<class _Outer, class... _Inner>
typedef allocator_traits<_Outer> scoped_allocator_adaptor< _Outer, _Inner >::_Outer_traits
private
template<class _Outer, class... _Inner>
typedef _Scoped_outermost_allocator<_Outer>::type scoped_allocator_adaptor< _Outer, _Inner >::_Outermost
private
template<class _Outer, class... _Inner>
typedef allocator_traits<_Outermost> scoped_allocator_adaptor< _Outer, _Inner >::_Outermost_traits
private
template<class _Outer, class... _Inner>
typedef _Outer_traits::const_pointer scoped_allocator_adaptor< _Outer, _Inner >::const_pointer
template<class _Outer, class... _Inner>
typedef _Outer_traits::const_void_pointer scoped_allocator_adaptor< _Outer, _Inner >::const_void_pointer
template<class _Outer, class... _Inner>
typedef _Outer_traits::difference_type scoped_allocator_adaptor< _Outer, _Inner >::difference_type
template<class _Outer, class... _Inner>
typedef _Mybase::inner_allocator_type scoped_allocator_adaptor< _Outer, _Inner >::inner_allocator_type
template<class _Outer, class... _Inner>
typedef _Scoped_is_always_equal<_Outermost, _Inner...>::type scoped_allocator_adaptor< _Outer, _Inner >::is_always_equal
template<class _Outer, class... _Inner>
typedef _Outer scoped_allocator_adaptor< _Outer, _Inner >::outer_allocator_type
template<class _Outer, class... _Inner>
typedef _Outer_traits::pointer scoped_allocator_adaptor< _Outer, _Inner >::pointer
template<class _Outer, class... _Inner>
typedef _Scoped_propagate_on_container_copy<_Outermost, _Inner...>::type scoped_allocator_adaptor< _Outer, _Inner >::propagate_on_container_copy_assignment
template<class _Outer, class... _Inner>
typedef _Scoped_propagate_on_container_move<_Outermost, _Inner...>::type scoped_allocator_adaptor< _Outer, _Inner >::propagate_on_container_move_assignment
template<class _Outer, class... _Inner>
typedef _Scoped_propagate_on_container_swap<_Outermost, _Inner...>::type scoped_allocator_adaptor< _Outer, _Inner >::propagate_on_container_swap
template<class _Outer, class... _Inner>
typedef _Outer_traits::size_type scoped_allocator_adaptor< _Outer, _Inner >::size_type
template<class _Outer, class... _Inner>
typedef _Outer_traits::value_type scoped_allocator_adaptor< _Outer, _Inner >::value_type
template<class _Outer, class... _Inner>
typedef _Outer_traits::void_pointer scoped_allocator_adaptor< _Outer, _Inner >::void_pointer

Constructor & Destructor Documentation

template<class _Outer, class... _Inner>
scoped_allocator_adaptor< _Outer, _Inner >::scoped_allocator_adaptor ( )
inline
411  { // default construct
412  }
template<class _Outer, class... _Inner>
scoped_allocator_adaptor< _Outer, _Inner >::scoped_allocator_adaptor ( const scoped_allocator_adaptor< _Outer, _Inner > &  _Right)
inline
415  : _Mybase(_Right.outer_allocator(),
416  _Right.inner_allocator())
417  { // construct from _Right
418  }
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:389
_Scoped_base< _Outer, _Inner...> _Mybase
Definition: scoped_allocator:350
inner_allocator_type & inner_allocator() _NOEXCEPT
Definition: scoped_allocator:399
template<class _Outer, class... _Inner>
template<class _Other >
scoped_allocator_adaptor< _Outer, _Inner >::scoped_allocator_adaptor ( _Other &&  _Other_arg,
const _Inner &...  _Inner_arg 
)
inline
423  : _Mybase(_STD forward<_Other>(_Other_arg),
424  _STD forward<inner_allocator_type>(
425  inner_allocator_type(_Inner_arg...)))
426  { // construct from (_Other, _Inner...)
427  }
_Mybase::inner_allocator_type inner_allocator_type
Definition: scoped_allocator:357
_Scoped_base< _Outer, _Inner...> _Mybase
Definition: scoped_allocator:350
template<class _Outer, class... _Inner>
template<class _Other >
scoped_allocator_adaptor< _Outer, _Inner >::scoped_allocator_adaptor ( const scoped_allocator_adaptor< _Other, _Inner...> &  _Right)
inline
432  : _Mybase(_Right.outer_allocator(),
433  _Right.inner_allocator())
434  { // construct from const adaptor<_Other, _Inner...>&
435  }
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:389
_Scoped_base< _Outer, _Inner...> _Mybase
Definition: scoped_allocator:350
inner_allocator_type & inner_allocator() _NOEXCEPT
Definition: scoped_allocator:399
template<class _Outer, class... _Inner>
template<class _Other >
scoped_allocator_adaptor< _Outer, _Inner >::scoped_allocator_adaptor ( scoped_allocator_adaptor< _Other, _Inner...> &&  _Right)
inline
440  : _Mybase(_STD forward<_Other>(_Right.outer_allocator()),
441  _Right.inner_allocator())
442  { // construct from adaptor<_Other, _Inner...>&&
443  }
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:389
_Scoped_base< _Outer, _Inner...> _Mybase
Definition: scoped_allocator:350
inner_allocator_type & inner_allocator() _NOEXCEPT
Definition: scoped_allocator:399

Member Function Documentation

template<class _Outer, class... _Inner>
pointer scoped_allocator_adaptor< _Outer, _Inner >::allocate ( size_type  _Count)
inline
462  { // allocate array of _Count elements, ignore hint
464  _Count));
465  }
unsigned int _Count
Definition: xcomplex:668
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:389
static _DECLSPEC_ALLOCATOR pointer allocate(_Alloc &_Al, size_type _Count)
Definition: xmemory0:585
template<class _Outer, class... _Inner>
pointer scoped_allocator_adaptor< _Outer, _Inner >::allocate ( size_type  _Count,
const_void_pointer  _Hint 
)
inline
468  { // allocate array of _Count elements, with hint
470  _Count, _Hint));
471  }
unsigned int _Count
Definition: xcomplex:668
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:389
static _DECLSPEC_ALLOCATOR pointer allocate(_Alloc &_Al, size_type _Count)
Definition: xmemory0:585
template<class _Outer, class... _Inner>
template<class _Ty , class... _Types>
void scoped_allocator_adaptor< _Outer, _Inner >::construct ( _Ty *  _Ptr,
_Types &&...  _Args 
)
inline
487  { // construct with varying allocator styles
490  inner_allocator(),
491  uses_allocator<_Ty, inner_allocator_type>(),
493  _Ptr, _STD forward<_Types>(_Args)...);
494  }
Definition: scoped_allocator:107
Definition: type_traits:486
void _Scoped_construct(_Outermost, _Inner, false_type, _Dont_care, _Ty *_Ptr, _Types &&..._Args)
Definition: scoped_allocator:135
inner_allocator_type & inner_allocator() _NOEXCEPT
Definition: scoped_allocator:399
template<class _Outer, class... _Inner>
template<class _Ty1 , class _Ty2 , class _Tpl1 , class _Tpl2 >
void scoped_allocator_adaptor< _Outer, _Inner >::construct ( pair< _Ty1, _Ty2 > *  _Ptr,
piecewise_construct_t  ,
_Tpl1  _Val1,
_Tpl2  _Val2 
)
inline
510  { // construct pair from tuples
511  _Scoped_construct_pair(inner_allocator(), _Ptr, _STD move(_Val1), _STD move(_Val2));
512  }
void _Scoped_construct_pair(_Inner _Inner_alval, pair< _Ty1, _Ty2 > *_Ptr, tuple< _Uy1...> _Val1, tuple< _Uy2...> _Val2)
Definition: scoped_allocator:208
inner_allocator_type & inner_allocator() _NOEXCEPT
Definition: scoped_allocator:399
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1290
template<class _Outer, class... _Inner>
template<class _Ty1 , class _Ty2 >
void scoped_allocator_adaptor< _Outer, _Inner >::construct ( pair< _Ty1, _Ty2 > *  _Ptr)
inline
517  { // construct pair from pointer to other pair
518  this->construct(_Ptr, piecewise_construct,
519  tuple<>(),
520  tuple<>());
521  }
void construct(_Ty *_Ptr, _Types &&..._Args)
Definition: scoped_allocator:486
constexpr piecewise_construct_t piecewise_construct
Definition: utility:67
Definition: tuple:229
template<class _Outer, class... _Inner>
template<class _Ty1 , class _Ty2 , class _Uy1 , class _Uy2 >
void scoped_allocator_adaptor< _Outer, _Inner >::construct ( pair< _Ty1, _Ty2 > *  _Ptr,
_Uy1 &&  _Val1,
_Uy2 &&  _Val2 
)
inline
529  { // construct pair from two movable values
530  this->construct(_Ptr, piecewise_construct,
531  _STD forward_as_tuple(_STD forward<_Uy1>(_Val1)),
532  _STD forward_as_tuple(_STD forward<_Uy2>(_Val2)));
533  }
constexpr tuple< _Types &&...> forward_as_tuple(_Types &&..._Args) _NOEXCEPT
Definition: tuple:985
void construct(_Ty *_Ptr, _Types &&..._Args)
Definition: scoped_allocator:486
constexpr piecewise_construct_t piecewise_construct
Definition: utility:67
template<class _Outer, class... _Inner>
template<class _Ty1 , class _Ty2 , class _Uy1 , class _Uy2 >
void scoped_allocator_adaptor< _Outer, _Inner >::construct ( pair< _Ty1, _Ty2 > *  _Ptr,
const pair< _Uy1, _Uy2 > &  _Other 
)
inline
541  { // construct pair from copyable pair
542  this->construct(_Ptr, piecewise_construct,
543  _STD forward_as_tuple(_Other.first),
544  _STD forward_as_tuple(_Other.second));
545  }
_Ty2 second
Definition: utility:243
constexpr tuple< _Types &&...> forward_as_tuple(_Types &&..._Args) _NOEXCEPT
Definition: tuple:985
void construct(_Ty *_Ptr, _Types &&..._Args)
Definition: scoped_allocator:486
constexpr piecewise_construct_t piecewise_construct
Definition: utility:67
_Ty1 first
Definition: utility:242
template<class _Outer, class... _Inner>
template<class _Ty1 , class _Ty2 , class _Uy1 , class _Uy2 >
void scoped_allocator_adaptor< _Outer, _Inner >::construct ( pair< _Ty1, _Ty2 > *  _Ptr,
pair< _Uy1, _Uy2 > &&  _Other 
)
inline
553  { // construct pair from movable pair
554  this->construct(_Ptr, piecewise_construct,
555  _STD forward_as_tuple(_STD forward<_Uy1>(_Other.first)),
556  _STD forward_as_tuple(_STD forward<_Uy2>(_Other.second)));
557  }
_Ty2 second
Definition: utility:243
constexpr tuple< _Types &&...> forward_as_tuple(_Types &&..._Args) _NOEXCEPT
Definition: tuple:985
void construct(_Ty *_Ptr, _Types &&..._Args)
Definition: scoped_allocator:486
constexpr piecewise_construct_t piecewise_construct
Definition: utility:67
_Ty1 first
Definition: utility:242
template<class _Outer, class... _Inner>
void scoped_allocator_adaptor< _Outer, _Inner >::deallocate ( pointer  _Ptr,
size_type  _Count 
)
inline
474  { // deallocate object at _Ptr, with size
476  _Ptr, _Count));
477  }
unsigned int _Count
Definition: xcomplex:668
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:389
static void deallocate(_Alloc &_Al, pointer _Ptr, size_type _Count)
Definition: xmemory0:596
template<class _Outer, class... _Inner>
template<class _Ty >
void scoped_allocator_adaptor< _Outer, _Inner >::destroy ( _Ty *  _Ptr)
inline
498  { // destroy object at _Ptr
500  _Outermost_traits::destroy(_Alval, _Ptr);
501  }
Definition: scoped_allocator:107
_Scoped_outermost_allocator< _Outer >::type _Outermost
Definition: scoped_allocator:352
static void destroy(_Alloc &_Al, _Ty *_Ptr)
Definition: xmemory0:641
template<class _Outer, class... _Inner>
inner_allocator_type& scoped_allocator_adaptor< _Outer, _Inner >::inner_allocator ( )
inline
400  { // get reference to inner allocator
401  return (const_cast<inner_allocator_type&>(
402  this->_Get_inner_object(*this)));
403  }
template<class _Outer, class... _Inner>
const inner_allocator_type& scoped_allocator_adaptor< _Outer, _Inner >::inner_allocator ( ) const
inline
406  { // get reference to inner allocator
407  return (this->_Get_inner_object(*this));
408  }
template<class _Outer, class... _Inner>
size_type scoped_allocator_adaptor< _Outer, _Inner >::max_size ( ) const
inline
480  { // estimate maximum array size
482  }
static size_type max_size(const _Alloc &_Al) _NOEXCEPT
Definition: xmemory0:646
outer_allocator_type & outer_allocator() _NOEXCEPT
Definition: scoped_allocator:389
template<class _Outer, class... _Inner>
template<class _Other >
scoped_allocator_adaptor& scoped_allocator_adaptor< _Outer, _Inner >::operator= ( scoped_allocator_adaptor< _Other, _Inner...> &&  _Right)
inline
448  { // assign from adaptor<_Other, _Inner...>&&
449  _Mybase::operator=(_STD move(_Right));
450  return (*this);
451  }
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1290
template<class _Outer, class... _Inner>
template<class _Other >
scoped_allocator_adaptor& scoped_allocator_adaptor< _Outer, _Inner >::operator= ( const scoped_allocator_adaptor< _Other, _Inner...> &  _Right)
inline
456  { // assign from adaptor<_Other, _Inner...>&
457  _Mybase::operator=(_Right);
458  return (*this);
459  }
template<class _Outer, class... _Inner>
outer_allocator_type& scoped_allocator_adaptor< _Outer, _Inner >::outer_allocator ( )
inline
390  { // get reference to outer allocator
391  return (static_cast<_Outer&>(*this));
392  }
template<class _Outer, class... _Inner>
const outer_allocator_type& scoped_allocator_adaptor< _Outer, _Inner >::outer_allocator ( ) const
inline
395  { // get reference to outer allocator
396  return (static_cast<const _Outer&>(*this));
397  }

The documentation for this class was generated from the following file: