STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
_Swc_base< _Ty, _Sx, _Rx, _Swc_Traits > Class Template Reference
Inheritance diagram for _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >:
_Circ_buf< _Ty, _Rx >

Public Types

typedef _Ty result_type
 
typedef _Swc_Traits _Traits
 
typedef _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits > _Myt
 
typedef _Circ_buf< _Ty, _Rx > _Mybase
 
typedef _Swc_Traits::_Seed_t _Seed_t
 

Public Member Functions

 _Swc_base ()
 
 _Swc_base (_Seed_t _X0)
 
template<class _Gen , class = typename _Enable_if_seed_seq<_Gen, _Myt>::type>
 _Swc_base (_Gen &_Gx)
 
void seed (_Seed_t _Value=default_seed)
 
template<class _Gen >
void seed (_Gen &_Gx, bool _Readcy=false)
 
result_type() min () const
 
result_type() max () const
 
result_type operator() ()
 
void discard (unsigned long long _Nskip)
 
bool _Equals (const _Swc_base &_Right) const
 
template<class _Elem , class _Traits >
basic_ostream< _Elem, _Traits > & _Write (basic_ostream< _Elem, _Traits > &_Ostr) const
 
- Public Member Functions inherited from _Circ_buf< _Ty, _Rx >
_Ty _At (int _Ix) const
 
bool _Equals (const _Circ_buf &_Right) const
 
unsigned int _Base (int _Ix=0) const
 

Static Public Attributes

static constexpr size_t short_lag = _Sx
 
static constexpr size_t long_lag = _Rx
 
static constexpr _Seed_t default_seed = static_cast<_Seed_t>(19780503U)
 

Protected Member Functions

template<class _Gen >
void _Seed (_Gen &_Gx, bool _Readcy, true_type)
 
template<class _Gen >
void _Seed (_Gen &_Gx, bool _Readcy, false_type)
 
template<class _Gen >
void _Reset (_Gen &_Gx, bool _Readcy)
 
void _Setx (int _Ix, _Ty _Xis, _Ty _Xir)
 

Protected Attributes

_Swc_Traits::_Cy_t _Carry
 

Additional Inherited Members

- Public Attributes inherited from _Circ_buf< _Ty, _Rx >
unsigned int _Idx
 
_Ty _Ax [2 *_Nw]
 

Member Typedef Documentation

template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
typedef _Circ_buf<_Ty, _Rx> _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Mybase
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
typedef _Swc_base<_Ty, _Sx, _Rx, _Swc_Traits> _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Myt
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
typedef _Swc_Traits::_Seed_t _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Seed_t
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
typedef _Swc_Traits _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Traits
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
typedef _Ty _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::result_type

Constructor & Destructor Documentation

template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
_Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Swc_base ( )
inline
778  { // construct with default seed
779  seed();
780  }
void seed(_Seed_t _Value=default_seed)
Definition: random:794
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
_Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Swc_base ( _Seed_t  _X0)
inline
783  { // construct with specified seed
784  seed(_X0);
785  }
void seed(_Seed_t _Value=default_seed)
Definition: random:794
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
template<class _Gen , class = typename _Enable_if_seed_seq<_Gen, _Myt>::type>
_Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Swc_base ( _Gen &  _Gx)
inline
790  { // construct with seed values from generator
791  seed(_Gx);
792  }
void seed(_Seed_t _Value=default_seed)
Definition: random:794

Member Function Documentation

template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
bool _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Equals ( const _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits > &  _Right) const
inline
836  { // return true if *this will generate same sequence as _Right
837  return (_Mybase::_Equals(_Right)
838  && _Carry == _Right._Carry);
839  }
bool _Equals(const _Circ_buf &_Right) const
Definition: random:705
_Swc_Traits::_Cy_t _Carry
Definition: random:892
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
template<class _Gen >
void _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Reset ( _Gen &  _Gx,
bool  _Readcy 
)
inlineprotected
867  { // reset sequence
868  _Carry = _Swc_Traits::_Reset(_Gx, this->_Ax, _Readcy);
869  this->_Idx = _Rx;
870  }
unsigned int _Idx
Definition: random:754
_Ty _Ax[2 *_Nw]
Definition: random:755
struct _Meta_at_< _Meta_list< _Types...>, _Idx, enable_if_t<(_Idx< sizeof...(_Types))> >:decltype(_Meta_at_impl< _Meta_repeat_n_c< _Idx, void * >>::_Eval(_Type_as_pointer< _Types >()...)){};template< class _List, class _Ty > struct _Meta_find_index_{};template< class _List, class _Ty > using _Meta_find_index=typename _Meta_find_index_< _List, _Ty >::type;constexpr auto _Meta_npos=static_cast< size_t >(-1);constexpr size_t _Meta_find_index_i_(bool const *const _Ptr, const size_t _Count, const size_t _Idx=0){return(_Idx >=_Count?_Meta_npos:_Ptr[_Idx]?_Idx:_Meta_find_index_i_(_Ptr, _Count, _Idx+1));}template< class _Ty > struct _Meta_find_index_< _Meta_list<>, _Ty >:integral_constant< size_t, _Meta_npos >{};template< class..._Types, class _Ty > struct _Meta_find_index_< _Meta_list< _Types...>, _Ty >{static constexpr bool _Bools[]={is_same< _Types, _Ty >::value...};using type=integral_constant< size_t, _Meta_find_index_i_(_Bools, sizeof...(_Types))>;};template< class _List, class _Ty > struct _Meta_find_unique_index_{};template< class _List, class _Ty > using _Meta_find_unique_index=typename _Meta_find_unique_index_< _List, _Ty >::type;constexpr size_t _Meta_find_unique_index_i_2(bool const *const _Ptr, const size_t _Count, const size_t _First){return(_First!=_Meta_npos &&_Meta_find_index_i_(_Ptr, _Count, _First+1)==_Meta_npos?_First:_Meta_npos);}constexpr size_t _Meta_find_unique_index_i_(bool const *const _Ptr, const size_t _Count){return(_Meta_find_unique_index_i_2(_Ptr, _Count, _Meta_find_index_i_(_Ptr, _Count)));}template< class _Ty > struct _Meta_find_unique_index_< _Meta_list<>, _Ty >:integral_constant< size_t, _Meta_npos >{};template< class..._Types, class _Ty > struct _Meta_find_unique_index_< _Meta_list< _Types...>, _Ty >{using type=integral_constant< size_t, _Meta_find_unique_index_i_(_Meta_find_index_< _Meta_list< _Types...>, _Ty >::_Bools, sizeof...(_Types))>;};template< class > struct _Meta_as_list_{};template< class _Ty > using _Meta_as_list=typename _Meta_as_list_< _Ty >::type;template< template< class > class _Template, class..._Types > struct _Meta_as_list_< _Template< _Types...> >{using type=_Meta_list< _Types...>;};template< class _Ty, _Ty..._Idxs > struct _Meta_as_list_< integer_sequence< _Ty, _Idxs...> >{using type=_Meta_list< integral_constant< _Ty, _Idxs >...>;};template< class _List > struct _Meta_as_integer_sequence_{};template< class _List > using _Meta_as_integer_sequence=typename _Meta_as_integer_sequence_< _List >::type;template< class _Ty, _Ty..._Idxs > struct _Meta_as_integer_sequence_< _Meta_list< integral_constant< _Ty, _Idxs >...> >{using type=integer_sequence< _Ty, _Idxs...>;};template< class...> struct _Meta_concat_{};template< class..._Types > using _Meta_concat=typename _Meta_concat_< _Types...>::type;template<> struct _Meta_concat_< _Meta_list<> >{using type=_Meta_list<>;};template< class..._Items1 > struct _Meta_concat_< _Meta_list< _Items1...> >{using type=_Meta_list< _Items1...>;};template< class..._Items1, class..._Items2 > struct _Meta_concat_< _Meta_list< _Items1...>, _Meta_list< _Items2...> >{using type=_Meta_list< _Items1..., _Items2...>;};template< class..._Items1, class..._Items2, class..._Items3 > struct _Meta_concat_< _Meta_list< _Items1...>, _Meta_list< _Items2...>, _Meta_list< _Items3...> >{using type=_Meta_list< _Items1..., _Items2..., _Items3...>;};template< class..._Items1, class..._Items2, class..._Items3, class..._Rest > struct _Meta_concat_< _Meta_list< _Items1...>, _Meta_list< _Items2...>, _Meta_list< _Items3...>, _Rest...>{using type=_Meta_concat< _Meta_list< _Items1..., _Items2..., _Items3...>, _Rest...>;};template< class _ListOfLists > using _Meta_join=_Meta_apply< _Meta_quote< _Meta_concat >, _ListOfLists >;template< class > struct _Meta_cartesian_product_{};template< class _ListOfLists > using _Meta_cartesian_product=typename _Meta_cartesian_product_< _ListOfLists >::type;template<> struct _Meta_cartesian_product_< _Meta_list<> >{using type=_Meta_list<>;};template< class..._Items > struct _Meta_cartesian_product_< _Meta_list< _Meta_list< _Items...> > >{using type=_Meta_list< _Meta_list< _Items >...>;};template< class..._Items, class..._Lists > struct _Meta_cartesian_product_< _Meta_list< _Meta_list< _Items...>, _Lists...> >{using type=_Meta_join< _Meta_list< _Meta_transform< _Meta_bind_back< _Meta_quote< _Meta_push_front >, _Items >, _Meta_cartesian_product< _Meta_list< _Lists...> > >...> >;};template< class..._Types > class variant;template< class _Ty > struct variant_size;template< class _Ty > struct variant_size< const _Ty >:variant_size< _Ty >::type{};template< class _Ty > struct variant_size< volatile _Ty >:variant_size< _Ty >::type{};template< class _Ty > struct variant_size< const volatile _Ty >:variant_size< _Ty >::type{};template< class _Ty > constexpr size_t variant_size_v=variant_size< _Ty >::value;template< class..._Types > struct variant_size< variant< _Types...> >:integral_constant< size_t, sizeof...(_Types)>{};template< size_t _Idx, class _Ty > struct variant_alternative;template< size_t _Idx, class _Ty > using variant_alternative_t=typename variant_alternative< _Idx, _Ty >::type;template< size_t _Idx, class _Ty > struct variant_alternative< _Idx, const _Ty >{using type=add_const_t< variant_alternative_t< _Idx, _Ty > >;};template< size_t _Idx, class _Ty > struct variant_alternative< _Idx, volatile _Ty >{using type=add_volatile_t< variant_alternative_t< _Idx, _Ty > >;};template< size_t _Idx, class _Ty > struct variant_alternative< _Idx, const volatile _Ty >{using type=add_cv_t< variant_alternative_t< _Idx, _Ty > >;};template< size_t _Idx, class..._Types > struct variant_alternative< _Idx, variant< _Types...> >{using type=_Meta_at_c< _Meta_list< _Types...>, _Idx >;};constexpr auto variant_npos=_Meta_npos;class bad_variant_access:public exception{public:bad_variant_access() _NOEXCEPT=default;virtual const char *__CLR_OR_THIS_CALL what() const _NOEXCEPT override{return("bad variant access");}protected:virtual void _Doraise() const {_RAISE(*this);}};struct _Variant_uses_allocator_t{};template< class _Ty, class=void > struct _Variant_item{remove_cv_t< _Ty > _Elem;template< class..._Types >constexpr explicit _Variant_item(_Types &&..._Args):_Elem(_STD forward< _Types >(_Args)...){}template< class _Alloc, class..._Types, enable_if_t< uses_allocator< _Ty, _Alloc >::value &&is_constructible< _Ty, allocator_arg_t, const _Alloc &, _Types...>::value, int >=0 >constexpr _Variant_item(_Variant_uses_allocator_t, const _Alloc &_Al, _Types &&..._Args):_Elem(allocator_arg, _Al, _STD forward< _Types >(_Args)...){}template< class _Alloc, class..._Types, enable_if_t< uses_allocator< _Ty, _Alloc >::value &&!is_constructible< _Ty, allocator_arg_t, const _Alloc &, _Types...>::value, int >=0 >constexpr _Variant_item(_Variant_uses_allocator_t, const _Alloc &_Al, _Types &&..._Args):_Elem(_STD forward< _Types >(_Args)..., _Al){}template< class _Alloc, class..._Types, enable_if_t<!uses_allocator< _Ty, _Alloc >::value, int >=0 >constexpr _Variant_item(_Variant_uses_allocator_t, const _Alloc &, _Types &&..._Args):_Elem(_STD forward< _Types >(_Args)...){}_CONSTEXPR14 _Ty &get()&{return(_Elem);}constexpr const _Ty &get() const &{return(_Elem);}_CONSTEXPR14 _Ty &&get()&&{return(_STD move(_Elem));}constexpr const _Ty &&get() const &&{return(_STD move(_Elem));}};template< bool _TrivialDestruction, class..._Types > class _Variant_storage_{};template< class..._Types > using _Variant_storage=_Variant_storage_< conjunction< is_trivially_destructible< _Variant_item< _Types > >...>::value, _Types...>;template< class _First, class..._Rest > class _Variant_storage_< true, _First, _Rest...>{public:static constexpr size_t _Size=1+sizeof...(_Rest);union{_Variant_item< _First > _Head;_Variant_storage< _Rest...> _Tail;};_Variant_storage_() _NOEXCEPT{}template< class..._Types >constexpr explicit _Variant_storage_(integral_constant< size_t, 0 >, _Types &&..._Args):_Head(_STD forward< _Types >(_Args)...){}template< size_t _Idx, class..._Types >constexpr explicit _Variant_storage_(integral_constant< size_t, _Idx >, _Types &&..._Args) _NOEXCEPT_OP((is_nothrow_constructible< _Variant_storage< _Rest...>, integral_constant< size_t, _Idx-1 >, _Types...>::value)):_Tail(integral_constant< size_t, _Idx-1 >{}, _STD forward< _Types >(_Args)...){}_Variant_storage_(_Variant_storage_ &&)=default;_Variant_storage_(const _Variant_storage_ &)=default;_Variant_storage_ &operator=(_Variant_storage_ &&)=default;_Variant_storage_ &operator=(const _Variant_storage_ &)=default;};template< class _First, class..._Rest > class _Variant_storage_< false, _First, _Rest...>{public:static constexpr size_t _Size=1+sizeof...(_Rest);union{_Variant_item< _First > _Head;_Variant_storage< _Rest...> _Tail;};~_Variant_storage_() _NOEXCEPT{}_Variant_storage_() _NOEXCEPT{}template< class..._Types >constexpr explicit _Variant_storage_(integral_constant< size_t, 0 >, _Types &&..._Args):_Head(_STD forward< _Types >(_Args)...){}template< size_t _Idx, class..._Types >constexpr explicit _Variant_storage_(integral_constant< size_t, _Idx >, _Types &&..._Args) _NOEXCEPT_OP((is_nothrow_constructible< _Variant_storage< _Rest...>, integral_constant< size_t, _Idx-1 >, _Types...>::value)):_Tail(integral_constant< size_t, _Idx-1 >{}, _STD forward< _Types >(_Args)...){}_Variant_storage_(_Variant_storage_ &&)=default;_Variant_storage_(const _Variant_storage_ &)=default;_Variant_storage_ &operator=(_Variant_storage_ &&)=default;_Variant_storage_ &operator=(const _Variant_storage_ &)=default;};template< size_t _Idx, class _Storage, enable_if_t< _Idx==0, int >=0 > constexpr decltype(auto) _Variant_raw_get(_Storage &&_Obj){return(_STD forward< _Storage >(_Obj)._Head);}template< size_t _Idx, class _Storage, enable_if_t< _Idx!=0, int >=0 > constexpr decltype(auto) _Variant_raw_get(_Storage &&_Obj){return(_Variant_raw_get< _Idx-1 >(_STD forward< _Storage >(_Obj)._Tail));}template< class _Storage, class _Fn > using _Variant_visit_raw_t=decltype(_STD declval< _Fn >()(integral_constant< size_t, 0 >{}, _Variant_raw_get< 0 >(_STD declval< _Storage >())));template< class _Storage, class _Fn, size_t _Idx > constexpr _Variant_visit_raw_t< _Storage, _Fn > _Variant_visit_raw_dispatch(_Storage &&_Obj, _Fn &&_Func){return(_STD forward< _Fn >(_Func)(integral_constant< size_t, _Idx >{}, _Variant_raw_get< _Idx >(_STD forward< _Storage >(_Obj))));}template< class _Storage, class _Fn, class _Indices > struct _Variant_raw_dispatch_table_;template< class _Storage, class _Fn > using _Variant_raw_dispatch_table=_Variant_raw_dispatch_table_< _Storage, _Fn, make_index_sequence< remove_reference_t< _Storage >::_Size > >;template< class _Storage, class _Fn, size_t..._Idxs > struct _Variant_raw_dispatch_table_< _Storage, _Fn, index_sequence< _Idxs...> >{using _Dispatch_t=_Variant_visit_raw_t< _Storage, _Fn >(*)(_Storage &&, _Fn &&);static constexpr _Dispatch_t _Array[]={&_Variant_visit_raw_dispatch< _Storage, _Fn, _Idxs >...};};template< class _Storage, class _Fn, size_t..._Idxs > constexpr typename _Variant_raw_dispatch_table_< _Storage, _Fn, index_sequence< _Idxs...> >::_Dispatch_t_Variant_raw_dispatch_table_< _Storage, _Fn, index_sequence< _Idxs...> >::_Array[];template< class _Storage, class _Fn, size_t..._Idxs > _CONSTEXPR14 _Variant_visit_raw_t< _Storage, _Fn > _Variant_visit_raw1(const size_t _Idx, _Storage &&_Obj, _Fn &&_Func, index_sequence< _Idxs...>){if(_Idx >=sizeof...(_Idxs)){_THROW_NCEE(bad_variant_access, _EMPTY_ARGUMENT);}constexpr auto &_Array=_Variant_raw_dispatch_table< _Storage, _Fn >::_Array;return(_Array[_Idx](_STD forward< _Storage >(_Obj), _STD forward< _Fn >(_Func)));}template< class _Storage, class _Fn > _CONSTEXPR14 _Variant_visit_raw_t< _Storage, _Fn > _Variant_visit_raw(const size_t _Idx, _Storage &&_Obj, _Fn &&_Func){return(_Variant_visit_raw1(_Idx, _STD forward< _Storage >(_Obj), _STD forward< _Fn >(_Func), make_index_sequence< remove_reference_t< _Storage >::_Size >{}));}template< size_t _Count > using _Variant_index_t=conditional_t<(_Count< static_cast< size_t >((numeric_limits< signed char >::max)())), signed char, conditional_t<(_Count< static_cast< size_t >((numeric_limits< short >::max)())), short, int > >;template< class..._Types > class _Variant_base:private _Variant_storage< _Types...>{public:using _Index_t=_Variant_index_t< sizeof...(_Types)>;static constexpr auto _Invalid_index=static_cast< _Index_t >(-1);_Index_t _Which;using _Storage_t=_Variant_storage< _Types...>;_CONSTEXPR14 _Storage_t &_Storage()&_NOEXCEPT{return(*this);}constexpr const _Storage_t &_Storage() const &_NOEXCEPT{return(*this);}_CONSTEXPR14 _Storage_t &&_Storage()&&_NOEXCEPT{return(_STD move(*this));}constexpr const _Storage_t &&_Storage() const &&_NOEXCEPT{return(_STD move(*this));}_Variant_base():_Storage_t{}, _Which{_Invalid_index}{}template< size_t _Idx, class..._UTypes, enable_if_t< is_constructible< _Variant_item< _Meta_at_c< _Meta_list< _Types...>, _Idx > >, _UTypes...>::value, int >=0 >constexpr explicit _Variant_base(in_place_index_t< _Idx >, _UTypes &&..._Args):_Storage_t(integral_constant< size_t, _Idx >{}, _STD forward< _UTypes >(_Args)...), _Which{static_cast< _Index_t >(_Idx)}{}constexpr bool valueless_by_exception() const _NOEXCEPT{return(_Which< 0);}constexpr size_t index() const _NOEXCEPT{return(static_cast< size_t >(_Which));}void _Set_index(const size_t _Idx){_Which=static_cast< _Index_t >(_Idx);}void _Reset() _NOEXCEPT{if(!this->valueless_by_exception()){_Reset1(_Conjunction_t< is_trivially_destructible< _Variant_item< _Types >>...>{});this->_Set_index(variant_npos);}}private:void _Reset1(true_type) _NOEXCEPT{}void _Reset1(false_type) _NOEXCEPT{_Variant_visit_raw(index(), _Storage(), [](auto, auto &_Obj){_Destroy_in_place(_Obj);});}};template< bool _AllTriviallyDestructible, class..._Types > struct _Variant_destroy_layer_;template< class..._Types > using _Variant_destroy_layer=_Variant_destroy_layer_< conjunction< is_trivially_destructible< _Variant_item< _Types > >...>::value, _Types...>;template< class..._Types > struct _Variant_destroy_layer_< true, _Types...>:_Variant_base< _Types...>{using _Variant_base< _Types...>::_Variant_base;};template< class..._Types > struct _Variant_destroy_layer_< false, _Types...>:_Variant_base< _Types...>{using _Variant_base< _Types...>::_Variant_base;~_Variant_destroy_layer_() _NOEXCEPT{this->_Reset();}};template< class..._Types > struct _Variant_construct_visitor{_Variant_base< _Types...> &_Self;template< class _Idx, class _Ty >void operator()(_Idx, _Ty &&_Source) const {_Construct_in_place(_Variant_raw_get< _Idx::value >(_Self._Storage()), _STD forward< _Ty >(_Source).get());_Self._Set_index(_Idx::value);}};template< class..._Types > struct _Variant_move_assign_visitor{_Variant_base< _Types...> &_Self;template< class _Idx, class _Ty >void operator()(_Idx, _Ty &&_Source) const {_Variant_raw_get< _Idx::value >(_Self._Storage()).get()=_STD forward< _Ty >(_Source).get();}};template< class..._Types > struct _Variant_direct_copy_assign_visitor{_Variant_destroy_layer< _Types...> &_Self;template< class _Idx, class _Ty >void operator()(_Idx, const _Ty &_Source) const {_Variant_raw_get< _Idx::value >(_Self._Storage()).get()=_Source.get();}};template< class..._Types > struct _Variant_indirect_copy_assign_visitor{_Variant_destroy_layer< _Types...> &_Self;template< class _Idx, class _Ty >void operator()(_Idx, const _Ty &_Source) const {auto _Temporary=_Source;_Self._Reset();_Construct_in_place(_Variant_raw_get< _Idx::value >(_Self._Storage()), _STD move(_Temporary));_Self._Set_index(_Idx::value);}};template< bool _UseTrivialSMFs, class..._Types > struct _Variant_copymove_layer_;template< class..._Types > using _Variant_copymove_layer=_Variant_copymove_layer_< conjunction< is_trivially_copyable< _Variant_item< _Types > >..., negation< is_reference< _Types > >...>::value, _Types...>;template< class..._Types > struct _Variant_copymove_layer_< true, _Types...>:_Variant_destroy_layer< _Types...>{using _Variant_destroy_layer< _Types...>::_Variant_destroy_layer;};template< class..._Types > struct _Variant_copymove_layer_< false, _Types...>:_Variant_destroy_layer< _Types...>{using _Variant_destroy_layer< _Types...>::_Variant_destroy_layer;_Variant_copymove_layer_()=default;_Variant_copymove_layer_(const _Variant_copymove_layer_ &_That){if(!_That.valueless_by_exception()){_Variant_visit_raw(_That.index(), _That._Storage(), _Variant_construct_visitor< _Types...>{*this});}}_Variant_copymove_layer_(_Variant_copymove_layer_ &&_That) _NOEXCEPT_OP(conjunction< is_nothrow_move_constructible< _Types >...>::value){if(!_That.valueless_by_exception()){_Variant_visit_raw(_That.index(), _STD move(_That)._Storage(), _Variant_construct_visitor< _Types...>{*this});}}_Variant_copymove_layer_ &operator=(const _Variant_copymove_layer_ &_That){if(this->_Which==_That._Which){if(!this->valueless_by_exception()){_Variant_visit_raw(_That.index(), _That._Storage(), _Variant_direct_copy_assign_visitor< _Types...>{*this});}}else{if(_That.valueless_by_exception()){this-> _Reset()
Definition: variant:942
_Swc_Traits::_Cy_t _Carry
Definition: random:892
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
template<class _Gen >
void _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Seed ( _Gen &  _Gx,
bool  _Readcy,
true_type   
)
inlineprotected
853  { // reset sequence from numeric value
855  _Gx == 0U ? default_seed : _Gx);
856  _Reset(_Lc, _Readcy);
857  }
Definition: random:487
void _Reset(_Gen &_Gx, bool _Readcy)
Definition: random:866
static constexpr _Seed_t default_seed
Definition: random:775
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
template<class _Gen >
void _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Seed ( _Gen &  _Gx,
bool  _Readcy,
false_type   
)
inlineprotected
861  { // reset sequence from generator
862  _Reset(_Gx, _Readcy);
863  }
void _Reset(_Gen &_Gx, bool _Readcy)
Definition: random:866
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
void _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Setx ( int  _Ix,
_Ty  _Xis,
_Ty  _Xir 
)
inlineprotected
873  { // update _Ax[_Ix] and _Carry
874  bool _Underflowed = false;
875  _Ty _Newx = _Xis;
876  if (_Newx < _Xir)
877  _Underflowed = true;
878  _Newx -= _Xir;
879  if (_Newx < static_cast<typename _Swc_Traits::_UCy_t>(_Carry))
880  _Underflowed = true;
881  _Newx -= _Carry;
882  if (_Underflowed)
883  { // underflowed, so add _Mod
884  _Newx += _Swc_Traits::_Mod;
885  _Carry = _Swc_Traits::_Cy;
886  }
887  else
888  _Carry = 0;
889  this->_Ax[_Ix] = _Newx;
890  }
_Ty _Ax[2 *_Nw]
Definition: random:755
_Swc_Traits::_Cy_t _Carry
Definition: random:892
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
template<class _Elem , class _Traits >
basic_ostream<_Elem, _Traits>& _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Write ( basic_ostream< _Elem, _Traits > &  _Ostr) const
inline
845  { // write state to _Ostr
846  _Swc_Traits::_Write(_Ostr, *this, _Carry);
847  return (_Ostr);
848  }
_Swc_Traits::_Cy_t _Carry
Definition: random:892
basic_ostream< _Elem, _Traits > & _Write(basic_ostream< _Elem, _Traits > &_Os, long double _Dx)
Definition: random:116
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
void _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::discard ( unsigned long long  _Nskip)
inline
830  { // discard _Nskip elements
831  for (; 0 < _Nskip; --_Nskip)
832  (*this)();
833  }
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
result_type() _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::max ( ) const
inline
811  { // return maximum possible generated value
812  return (_Swc_Traits::_Max);
813  }
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
result_type() _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::min ( ) const
inline
806  { // return minimum possible generated value
807  return (0);
808  }
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
result_type _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::operator() ( )
inline
816  { // return next value
817  int _Ix = 2 * _Rx <= this->_Idx ? 0 : this->_Idx;
818  if (_Ix < _Sx)
819  _Setx(_Ix, this->_Ax[_Ix + 2 * _Rx - _Sx],
820  this->_Ax[_Ix + _Rx]);
821  else if (_Ix < _Rx)
822  _Setx(_Ix, this->_Ax[_Ix - _Sx], this->_Ax[_Ix + _Rx]);
823  else
824  _Setx(_Ix, this->_Ax[_Ix - _Sx], this->_Ax[_Ix - _Rx]);
825  this->_Idx = _Ix + 1;
826  return (this->_Ax[_Ix]);
827  }
unsigned int _Idx
Definition: random:754
_Ty _Ax[2 *_Nw]
Definition: random:755
void _Setx(int _Ix, _Ty _Xis, _Ty _Xir)
Definition: random:872
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
void _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::seed ( _Seed_t  _Value = default_seed)
inline
795  { // set initial values from specified seed value
796  _Seed(_Value, false, true_type());
797  }
void _Seed(_Gen &_Gx, bool _Readcy, true_type)
Definition: random:852
_In_ _Value
Definition: corecrt_wstdlib.h:65
integral_constant< bool, true > true_type
Definition: xtr1common:41
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
template<class _Gen >
void _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::seed ( _Gen &  _Gx,
bool  _Readcy = false 
)
inline
801  { // set initial values from range
802  _Seed(_Gx, _Readcy, is_arithmetic<_Gen>());
803  }
Definition: xtr1common:282
void _Seed(_Gen &_Gx, bool _Readcy, true_type)
Definition: random:852

Member Data Documentation

template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
_Swc_Traits::_Cy_t _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::_Carry
protected
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
constexpr _Seed_t _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::default_seed = static_cast<_Seed_t>(19780503U)
static
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
const size_t _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::long_lag = _Rx
static
template<class _Ty, size_t _Sx, size_t _Rx, class _Swc_Traits>
const size_t _Swc_base< _Ty, _Sx, _Rx, _Swc_Traits >::short_lag = _Sx
static

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