STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs | Functions | Variables
xutility File Reference
#include <climits>
#include <cstdlib>
#include <utility>

Classes

struct  _Container_base0
 
struct  _Iterator_base0
 
struct  _Container_proxy
 
struct  _Container_base12
 
struct  _Iterator_base12
 
struct  _Zero_then_variadic_args_t
 
struct  _One_then_variadic_args_t
 
class  _Compressed_pair< _Ty1, _Ty2, bool >
 
class  _Compressed_pair< _Ty1, _Ty2, false >
 
struct  _Is_checked_helper< _Ty, class >
 
struct  _Is_checked_helper< _Ty, void_t< typename _Ty::_Unchecked_type > >
 
struct  input_iterator_tag
 
struct  _Mutable_iterator_tag
 
struct  output_iterator_tag
 
struct  forward_iterator_tag
 
struct  bidirectional_iterator_tag
 
struct  random_access_iterator_tag
 
struct  _General_ptr_iterator_tag
 
struct  _Trivially_copyable_ptr_iterator_tag
 
struct  _Really_trivial_ptr_iterator_tag
 
struct  _Any_tag
 
struct  iterator< _Category, _Ty, _Diff, _Pointer, _Reference >
 
struct  _Iterator012< _Category, _Ty, _Diff, _Pointer, _Reference, _Base >
 
struct  _Iterator_traits_base< class, class >
 
struct  _Iterator_traits_base< _Iter, void_t< typename _Iter::iterator_category, typename _Iter::value_type, typename _Iter::difference_type, typename _Iter::pointer, typename _Iter::reference > >
 
struct  iterator_traits< _Iter >
 
struct  iterator_traits< _Ty * >
 
struct  iterator_traits< const _Ty * >
 
struct  _Is_iterator< _Ty, class >
 
struct  _Is_iterator< _Ty, void_t< typename iterator_traits< _Ty >::iterator_category > >
 
struct  _Distance_unknown
 
struct  _Is_same_size< _Ty1, _Ty2 >
 
struct  _Unwrap_enum< _Elem, _Is_enum >
 
struct  _Unwrap_enum< _Elem, false >
 
struct  _Both_or_neither_bool< _Ty1, _Ty2 >
 
struct  _Ptr_cat_helper< _Source, _Dest >
 
struct  _Ptr_cat_helper< _Elem, _Elem >
 
struct  _Ptr_cat_helper< _Anything *, const _Anything * >
 
struct  pointer_traits< _Ty >
 
class  reverse_iterator< _RanIt >
 
struct  _Is_checked_helper< reverse_iterator< _RanIt > >
 
class  _Array_const_iterator< _Ty, _Size >
 
class  _Array_iterator< _Ty, _Size >
 
class  move_iterator< _RanIt >
 
struct  _Is_checked_helper< move_iterator< _RanIt > >
 
struct  _Char_traits_eq< _Traits >
 
struct  _Char_traits_lt< _Traits >
 
struct  _Is_character< _Ty >
 
struct  _Is_character< char >
 
struct  _Is_character< signed char >
 
struct  _Is_character< unsigned char >
 
struct  _Fill_memset_is_safe_helper< _FwdIt, _Ty >
 
struct  _Value_equality_is_bitwise_equality< _Elem1, _Elem2 >
 
struct  _Equal_memcmp_is_safe_helper< _Elem1, _Elem2, _Pr >
 
struct  _Equal_memcmp_is_safe_helper< _Elem1, _Elem2, equal_to<> >
 
struct  _Equal_memcmp_is_safe_helper< _Elem1 *, _Elem2 *, equal_to<> >
 
struct  _Equal_memcmp_is_safe_helper< _Elem, _Elem, _Char_traits_eq< char_traits< _Elem > > >
 
struct  _Equal_memcmp_is_safe_helper< _Elem, _Elem, equal_to< _Elem > >
 
struct  _Lex_compare_check_element_types_helper< _Elem1, _Elem2, _FTy >
 
struct  _Lex_compare_check_element_types_helper< _Elem1, _Elem2, void >
 
struct  _Lex_compare_optimize< _Memcmp_pr >
 
class  _Rng_from_urng< _Diff, _Urng >
 
class  _Yarn< _Elem >
 
class  back_insert_iterator< _Container >
 
struct  _Is_checked_helper< back_insert_iterator< _Container > >
 
struct  _Has_allocator_type< _Ty, _Alloc, class >
 
struct  _Has_allocator_type< _Ty, _Alloc, void_t< typename _Ty::allocator_type > >
 
struct  allocator_arg_t
 
struct  std::uses_allocator< _Ty, _Alloc >
 

Macros

#define _XUTILITY_
 
#define _DEBUG_ERROR(mesg)
 
#define _IDL_VERIFY(assertion, message)
 
#define _IDL_VERIFY_ALWAYS(assertion, message)   _SCL_SECURE_ALWAYS_VALIDATE(assertion)
 
#define _UNCHECKED_TYPE(_Iter)   decltype(_Unchecked(_STD declval<_Iter>()))
 
#define _DEFINE_DEPRECATE_UNCHECKED(_Func)
 
#define _USE_DEPRECATE_UNCHECKED(_Iter)   (_Unchecked_iterators::_Deprecate(_Is_checked(_Iter)))
 
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
 
#define _DEBUG_LT(x, y)   ((x) < (y))
 
#define _DEBUG_LT_PRED(pred, x, y)   pred(x, y)
 
#define _DEBUG_ORDER_PRED(first, last, pred)
 
#define _DEBUG_RANGE(first, last)
 
#define _DEBUG_RANGE2(first, last, file, line)
 
#define _DEBUG_ARRAY_SIZE(_Array, _Desired)
 

Typedefs

typedef _Container_base0 _Container_base
 
typedef _Iterator_base0 _Iterator_base
 
typedef iterator< output_iterator_tag, void, void, void, void_Outit
 
template<class _Iter >
using _Iter_value_t = typename iterator_traits< _Iter >::value_type
 
template<class _Iter >
using _Iter_diff_t = typename iterator_traits< _Iter >::difference_type
 
template<class _Iter >
using _Iter_cat_t = typename iterator_traits< _Iter >::iterator_category
 
template<class _Memcmp_pr , class _Obj1 , class _Obj2 , class _FTy >
using _Lex_compare_check_element_types = _Lex_compare_optimize< conditional_t< _Lex_compare_check_element_types_helper< remove_const_t< _Obj1 >, remove_const_t< _Obj2 >, _FTy >::value, _Memcmp_pr, void >>
 

Functions

template<class _Iter >
constexpr _Iter _Unchecked (_Iter _Src)
 
template<class _Iter , class _UIter >
_CONSTEXPR14 _Iter & _Rechecked (_Iter &_Dest, _UIter _Src)
 
template<class _Iter >
_Distance_unknown _Idl_distance (const _Iter &, const _Iter &)
 
template<class _Iter , class _Diff >
auto _Unchecked_n (_Iter _Src, _Diff)
 
template<class _Iter , class _Diff >
auto _Unchecked_n_backward (_Iter _Src, _Diff)
 
template<class _Source , class _Dest >
_General_ptr_iterator_tag _Ptr_copy_cat (const _Source &, const _Dest &)
 
template<class _Source , class _Dest >
conditional_t< is_trivially_assignable< _Dest &, _Source & >::value, typename _Ptr_cat_helper< remove_const_t< _Source >, _Dest >::type, _General_ptr_iterator_tag_Ptr_copy_cat (_Source *const &, _Dest *const &)
 
template<class _Source , class _Dest >
_General_ptr_iterator_tag _Ptr_move_cat (const _Source &, const _Dest &)
 
template<class _Source , class _Dest >
conditional_t< is_trivially_assignable< _Dest &, _Source >::value, typename _Ptr_cat_helper< remove_const_t< _Source >, _Dest >::type, _General_ptr_iterator_tag_Ptr_move_cat (_Source *const &, _Dest *const &)
 
template<class _InIt , class _Diff >
void _Advance1 (_InIt &_Where, _Diff _Off, input_iterator_tag)
 
template<class _BidIt , class _Diff >
void _Advance1 (_BidIt &_Where, _Diff _Off, bidirectional_iterator_tag)
 
template<class _RanIt , class _Diff >
void _Advance1 (_RanIt &_Where, _Diff _Off, random_access_iterator_tag)
 
template<class _InIt , class _Diff >
void advance (_InIt &_Where, _Diff _Off)
 
template<class _InIt >
_Iter_diff_t< _InIt > _Distance1 (_InIt _First, _InIt _Last, input_iterator_tag)
 
template<class _RanIt >
_Iter_diff_t< _RanIt > _Distance1 (_RanIt _First, _RanIt _Last, random_access_iterator_tag)
 
template<class _InIt >
_Iter_diff_t< _InIt > distance (_InIt _First, _InIt _Last)
 
template<class _InIt >
_InIt next (_InIt _First, _Iter_diff_t< _InIt > _Off=1)
 
template<class _BidIt >
_BidIt prev (_BidIt _First, _Iter_diff_t< _BidIt > _Off=1)
 
template<class _Iterator >
constexpr _Iterator _Operator_arrow (_Iterator _Target, true_type)
 
template<class _Iterator >
decltype(auto) constexpr _Operator_arrow (_Iterator &&_Target, false_type)
 
template<class _RanIt >
_CONSTEXPR17_11 reverse_iterator< _RanIt > operator+ (typename reverse_iterator< _RanIt >::difference_type _Off, const reverse_iterator< _RanIt > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 auto operator- (const reverse_iterator< _RanIt1 > &_Left, const reverse_iterator< _RanIt2 > &_Right) -> decltype(_Right.base()-_Left.base())
 
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator== (const reverse_iterator< _RanIt1 > &_Left, const reverse_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator!= (const reverse_iterator< _RanIt1 > &_Left, const reverse_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator< (const reverse_iterator< _RanIt1 > &_Left, const reverse_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator> (const reverse_iterator< _RanIt1 > &_Left, const reverse_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator<= (const reverse_iterator< _RanIt1 > &_Left, const reverse_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator>= (const reverse_iterator< _RanIt1 > &_Left, const reverse_iterator< _RanIt2 > &_Right)
 
template<class _RanIt >
_CONSTEXPR17_11 reverse_iterator< _RanIt > make_reverse_iterator (_RanIt _Iter)
 
template<class _Container >
auto begin (_Container &_Cont) -> decltype(_Cont.begin())
 
template<class _Container >
auto begin (const _Container &_Cont) -> decltype(_Cont.begin())
 
template<class _Container >
auto end (_Container &_Cont) -> decltype(_Cont.end())
 
template<class _Container >
auto end (const _Container &_Cont) -> decltype(_Cont.end())
 
template<class _Ty , size_t _Size>
constexpr _Ty * begin (_Ty(&_Array)[_Size]) _NOEXCEPT
 
template<class _Ty , size_t _Size>
constexpr _Ty * end (_Ty(&_Array)[_Size]) _NOEXCEPT
 
template<class _Container >
constexpr auto cbegin (const _Container &_Cont) _NOEXCEPT_OP(_NOEXCEPT_OP(_STD begin(_Cont))) -> decltype(_STD begin(_Cont))
 
template<class _Container >
constexpr auto cend (const _Container &_Cont) _NOEXCEPT_OP(_NOEXCEPT_OP(_STD end(_Cont))) -> decltype(_STD end(_Cont))
 
template<class _Container >
auto rbegin (_Container &_Cont) -> decltype(_Cont.rbegin())
 
template<class _Container >
auto rbegin (const _Container &_Cont) -> decltype(_Cont.rbegin())
 
template<class _Container >
auto rend (_Container &_Cont) -> decltype(_Cont.rend())
 
template<class _Container >
auto rend (const _Container &_Cont) -> decltype(_Cont.rend())
 
template<class _Ty , size_t _Size>
reverse_iterator< _Ty * > rbegin (_Ty(&_Array)[_Size])
 
template<class _Ty , size_t _Size>
reverse_iterator< _Ty * > rend (_Ty(&_Array)[_Size])
 
template<class _Elem >
reverse_iterator< const _Elem * > rbegin (initializer_list< _Elem > _Ilist)
 
template<class _Elem >
reverse_iterator< const _Elem * > rend (initializer_list< _Elem > _Ilist)
 
template<class _Container >
auto crbegin (const _Container &_Cont) -> decltype(_STD rbegin(_Cont))
 
template<class _Container >
auto crend (const _Container &_Cont) -> decltype(_STD rend(_Cont))
 
template<class _Container >
constexpr auto size (const _Container &_Cont) -> decltype(_Cont.size())
 
template<class _Ty , size_t _Size>
constexpr size_t size (const _Ty(&)[_Size]) _NOEXCEPT
 
template<class _Container >
constexpr auto empty (const _Container &_Cont) -> decltype(_Cont.empty())
 
template<class _Ty , size_t _Size>
constexpr bool empty (const _Ty(&)[_Size]) _NOEXCEPT
 
template<class _Elem >
constexpr bool empty (initializer_list< _Elem > _Ilist) _NOEXCEPT
 
template<class _Container >
constexpr auto data (_Container &_Cont) -> decltype(_Cont.data())
 
template<class _Container >
constexpr auto data (const _Container &_Cont) -> decltype(_Cont.data())
 
template<class _Ty , size_t _Size>
constexpr _Ty * data (_Ty(&_Array)[_Size]) _NOEXCEPT
 
template<class _Elem >
constexpr const _Elem * data (initializer_list< _Elem > _Ilist) _NOEXCEPT
 
template<class _Ty , size_t _Size>
_Array_const_iterator< _Ty, _Size >::_Unchecked_type _Unchecked (_Array_const_iterator< _Ty, _Size > _Iter)
 
template<class _Ty , size_t _Size>
_Array_const_iterator< _Ty, _Size > & _Rechecked (_Array_const_iterator< _Ty, _Size > &_Iter, typename _Array_const_iterator< _Ty, _Size >::_Unchecked_type _Right)
 
template<class _Ty , size_t _Size>
_Array_const_iterator< _Ty, _Sizeoperator+ (typename _Array_const_iterator< _Ty, _Size >::difference_type _Off, _Array_const_iterator< _Ty, _Size > _Next)
 
template<class _Ty , size_t _Size>
_Array_iterator< _Ty, _Size >::_Unchecked_type _Unchecked (_Array_iterator< _Ty, _Size > _Iter)
 
template<class _Ty , size_t _Size>
_Array_iterator< _Ty, _Size > & _Rechecked (_Array_iterator< _Ty, _Size > &_Iter, typename _Array_iterator< _Ty, _Size >::_Unchecked_type _Right)
 
template<class _Ty , size_t _Size>
_Array_iterator< _Ty, _Sizeoperator+ (typename _Array_iterator< _Ty, _Size >::difference_type _Off, _Array_iterator< _Ty, _Size > _Next)
 
template<class _RanIt , class _Diff >
move_iterator< _RanIt > operator+ (_Diff _Off, const move_iterator< _RanIt > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
auto operator- (const move_iterator< _RanIt1 > &_Left, const move_iterator< _RanIt2 > &_Right) -> decltype(_Left.base()-_Right.base())
 
template<class _RanIt1 , class _RanIt2 >
bool operator== (const move_iterator< _RanIt1 > &_Left, const move_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
bool operator!= (const move_iterator< _RanIt1 > &_Left, const move_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
bool operator< (const move_iterator< _RanIt1 > &_Left, const move_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
bool operator> (const move_iterator< _RanIt1 > &_Left, const move_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
bool operator<= (const move_iterator< _RanIt1 > &_Left, const move_iterator< _RanIt2 > &_Right)
 
template<class _RanIt1 , class _RanIt2 >
bool operator>= (const move_iterator< _RanIt1 > &_Left, const move_iterator< _RanIt2 > &_Right)
 
template<class _RanIt >
move_iterator< _RanIt > make_move_iterator (_RanIt _Iter)
 
template<class _InIt , class _OutIt >
_OutIt _Copy_memmove (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _OutIt >
_OutIt _Copy_unchecked1 (_InIt _First, _InIt _Last, _OutIt _Dest, _General_ptr_iterator_tag)
 
template<class _InIt , class _OutIt >
_OutIt _Copy_unchecked1 (_InIt _First, _InIt _Last, _OutIt _Dest, _Trivially_copyable_ptr_iterator_tag)
 
template<class _InIt , class _OutIt >
_OutIt _Copy_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _OutIt >
_OutIt _Copy_no_deprecate (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _OutIt >
_OutIt copy (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked2 (_InIt _First, _Diff _Count, _OutIt _Dest, input_iterator_tag)
 
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked2 (_InIt _First, _Diff _Count, _OutIt _Dest, forward_iterator_tag)
 
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked1 (_InIt _First, _Diff _Count, _OutIt _Dest, _General_ptr_iterator_tag)
 
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked1 (_InIt _First, _Diff _Count, _OutIt _Dest, _Trivially_copyable_ptr_iterator_tag)
 
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked (_InIt _First, _Diff _Count, _OutIt _Dest)
 
template<class _InIt , class _Diff , class _OutIt >
_OutIt copy_n (_InIt _First, _Diff _Count, _OutIt _Dest)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Copy_backward_memmove (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Copy_backward_unchecked (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest, _General_ptr_iterator_tag)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Copy_backward_unchecked (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest, _Trivially_copyable_ptr_iterator_tag)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 copy_backward (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
 
template<class _InIt , class _OutIt >
_OutIt _Move_unchecked1 (_InIt _First, _InIt _Last, _OutIt _Dest, _General_ptr_iterator_tag)
 
template<class _InIt , class _OutIt >
_OutIt _Move_unchecked1 (_InIt _First, _InIt _Last, _OutIt _Dest, _Trivially_copyable_ptr_iterator_tag)
 
template<class _InIt , class _OutIt >
_OutIt _Move_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _OutIt >
_OutIt _Move_no_deprecate (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _OutIt >
_OutIt move (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Move_backward_unchecked1 (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest, _General_ptr_iterator_tag)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Move_backward_unchecked1 (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest, _Trivially_copyable_ptr_iterator_tag)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Move_backward_unchecked (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
 
template<class _BidIt1 , class _BidIt2 >
_BidIt2 move_backward (_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
 
template<class _FwdIt , class _Ty >
_Fill_memset_is_safe_helper< _FwdIt, _Ty >::type _Fill_memset_is_safe (const _FwdIt &, const _Ty &)
 
template<class _FwdIt , class _Ty >
void _Fill_unchecked1 (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, false_type)
 
template<class _FwdIt , class _Ty >
void _Fill_unchecked1 (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, true_type)
 
template<class _FwdIt , class _Ty >
void _Fill_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _FwdIt , class _Ty >
void fill (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _OutIt , class _Diff , class _Ty >
_OutIt _Fill_n_unchecked1 (_OutIt _Dest, _Diff _Count, const _Ty &_Val, false_type)
 
template<class _OutIt , class _Diff , class _Ty >
_OutIt _Fill_n_unchecked1 (_OutIt _Dest, _Diff _Count, const _Ty &_Val, true_type)
 
template<class _OutIt , class _Diff , class _Ty >
_OutIt _Fill_n_unchecked (_OutIt _Dest, _Diff _Count, const _Ty &_Val)
 
template<class _OutIt , class _Diff , class _Ty >
_OutIt fill_n (_OutIt _Dest, _Diff _Count, const _Ty &_Val)
 
template<class _Iter1 , class _Iter2 , class _Pr >
false_type _Equal_memcmp_is_safe (const _Iter1 &, const _Iter2 &, const _Pr &)
 
template<class _Obj1 , class _Obj2 , class _Pr >
_Equal_memcmp_is_safe_helper< remove_const_t< _Obj1 >, remove_const_t< _Obj2 >, _Pr >::type _Equal_memcmp_is_safe (_Obj1 *const &, _Obj2 *const &, const _Pr &)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked1 (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred, false_type)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked1 (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &, true_type)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_no_deprecate (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool equal (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 >
bool equal (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr &_Pred, input_iterator_tag, input_iterator_tag)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr &_Pred, random_access_iterator_tag, random_access_iterator_tag)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool equal (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 >
bool equal (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2)
 
template<class _InIt1 , class _InIt2 , class _Pr >
_Lex_compare_optimize< void_Lex_compare_memcmp_classify (const _InIt1 &, const _InIt2 &, const _Pr &)
 
template<class _Obj1 , class _Obj2 , class _FTy >
_Lex_compare_check_element_types< less< int >, _Obj1, _Obj2, _FTy > _Lex_compare_memcmp_classify (_Obj1 *const &, _Obj2 *const &, const less< _FTy > &)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Lex_compare_unchecked1 (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr &_Pred, _Lex_compare_optimize< void >)
 
template<class _InIt1 , class _InIt2 , class _Pr , class _Memcmp_pr >
bool _Lex_compare_unchecked1 (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr &, _Lex_compare_optimize< _Memcmp_pr >)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Lex_compare_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr &_Pred)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool lexicographical_compare (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 >
bool lexicographical_compare (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2)
 
template<class _Ty >
bool _Within_limits (const _Ty &_Val, true_type, true_type, _Any_tag)
 
template<class _Ty >
bool _Within_limits (const _Ty &_Val, true_type, false_type, true_type)
 
template<class _Ty >
bool _Within_limits (const _Ty &_Val, true_type, false_type, false_type)
 
template<class _Ty >
bool _Within_limits (const _Ty &_Val, false_type, true_type, _Any_tag)
 
template<class _Ty >
bool _Within_limits (const _Ty &_Val, false_type, false_type, _Any_tag)
 
template<class _InIt , class _Ty >
bool _Within_limits (_InIt, const _Ty &_Val)
 
template<class _InIt >
bool _Within_limits (_InIt, const bool &)
 
template<class _InIt , class _Ty >
_InIt _Find_unchecked1 (_InIt _First, _InIt _Last, const _Ty &_Val, true_type)
 
template<class _InIt , class _Ty >
_InIt _Find_unchecked1 (_InIt _First, _InIt _Last, const _Ty &_Val, false_type)
 
template<class _InIt , class _Ty >
_InIt _Find_unchecked (_InIt _First, _InIt _Last, const _Ty &_Val)
 
template<class _InIt , class _Ty >
_InIt find (_InIt _First, _InIt _Last, const _Ty &_Val)
 
template<class _InIt , class _Ty , class _Pr >
_InIt _Find_pr (_InIt _First, _InIt _Last, const _Ty &_Val, _Pr &_Pred)
 
template<class _InIt , class _Ty >
_Iter_diff_t< _InIt > _Count_unchecked (_InIt _First, _InIt _Last, const _Ty &_Val)
 
template<class _InIt , class _Ty >
_Iter_diff_t< _InIt > count (_InIt _First, _InIt _Last, const _Ty &_Val)
 
template<class _InIt , class _Ty , class _Pr >
_Iter_diff_t< _InIt > _Count_pr (_InIt _First, _InIt _Last, const _Ty &_Val, _Pr &_Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
void _Trim_matching_suffixes (_FwdIt1 &, _FwdIt2 &, _Pr &, forward_iterator_tag, forward_iterator_tag)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
void _Trim_matching_suffixes (_FwdIt1 &_Last1, _FwdIt2 &_Last2, _Pr &_Pred, bidirectional_iterator_tag, bidirectional_iterator_tag)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Check_match_counts (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr &_Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr &_Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_no_deprecate (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr &_Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool is_permutation (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
bool is_permutation (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr &_Pred, forward_iterator_tag, forward_iterator_tag)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr &_Pred, random_access_iterator_tag, random_access_iterator_tag)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool is_permutation (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
bool is_permutation (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _BidIt >
void _Reverse_unchecked (_BidIt _First, _BidIt _Last)
 
template<class _BidIt >
void reverse (_BidIt _First, _BidIt _Last)
 
template<class _FwdIt >
_FwdIt _Rotate_unchecked1 (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last, forward_iterator_tag)
 
template<class _BidIt >
pair< _BidIt, _BidIt > _Reverse_until_sentinel_unchecked (_BidIt _First, _BidIt _Sentinel, _BidIt _Last)
 
template<class _BidIt >
_BidIt _Rotate_unchecked1 (_BidIt _First, _BidIt _Mid, _BidIt _Last, bidirectional_iterator_tag)
 
template<class _RanIt >
_RanIt _Rotate_unchecked1 (_RanIt _First, _RanIt _Mid, _RanIt _Last, random_access_iterator_tag)
 
template<class _FwdIt >
_FwdIt _Rotate_unchecked (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
 
template<class _FwdIt >
_FwdIt rotate (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
 
template<class _Container >
back_insert_iterator< _Container > back_inserter (_Container &_Cont)
 
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xbad_alloc ()
 
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xinvalid_argument (_In_z_ const char *)
 
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xlength_error (_In_z_ const char *)
 
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xout_of_range (_In_z_ const char *)
 
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xoverflow_error (_In_z_ const char *)
 
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xruntime_error (_In_z_ const char *)
 

Variables

template<class _Iter >
_Is_checked_helper< _Iter >::type _Is_checked (_Iter)
 
constexpr allocator_arg_t allocator_arg {}
 
template<class _Ty , class _Alloc >
constexpr bool std::uses_allocator_v = uses_allocator<_Ty, _Alloc>::value
 

Macro Definition Documentation

#define _DEBUG_ARRAY_SIZE (   _Array,
  _Desired 
)
#define _DEBUG_ERROR (   mesg)
#define _DEBUG_LT (   x,
 
)    ((x) < (y))
#define _DEBUG_LT_PRED (   pred,
  x,
 
)    pred(x, y)
#define _DEBUG_ORDER_PRED (   first,
  last,
  pred 
)
#define _DEBUG_RANGE (   first,
  last 
)
#define _DEBUG_RANGE2 (   first,
  last,
  file,
  line 
)
#define _DEFINE_DEPRECATE_UNCHECKED (   _Func)
Value:
struct _Unchecked_iterators \
{ /* Warns about unchecked iterators */ \
static void _SCL_INSECURE_DEPRECATE_FN(_Func) _Deprecate(false_type) \
{ /* Detected unchecked iterator, warn */ \
} \
\
static void _Deprecate(true_type) \
{ /* Detected checked iterator, do not warn */ \
} \
}
Definition: xtr1common:23
#define _SCL_INSECURE_DEPRECATE_FN(_Func)
Definition: yvals.h:372
#define _DEPRECATE_UNCHECKED (   _Func,
  _Iter 
)
Value:
#define _USE_DEPRECATE_UNCHECKED(_Iter)
Definition: xutility:498
#define _DEFINE_DEPRECATE_UNCHECKED(_Func)
Definition: xutility:486
#define _IDL_VERIFY (   assertion,
  message 
)
#define _IDL_VERIFY_ALWAYS (   assertion,
  message 
)    _SCL_SECURE_ALWAYS_VALIDATE(assertion)
_UNCHECKED_TYPE (   _Iter)    decltype(_Unchecked(_STD declval<_Iter>()))
inline
#define _USE_DEPRECATE_UNCHECKED (   _Iter)    (_Unchecked_iterators::_Deprecate(_Is_checked(_Iter)))
#define _XUTILITY_

Typedef Documentation

template<class _Iter >
using _Iter_cat_t = typename iterator_traits<_Iter>::iterator_category
template<class _Iter >
using _Iter_diff_t = typename iterator_traits<_Iter>::difference_type
template<class _Iter >
using _Iter_value_t = typename iterator_traits<_Iter>::value_type
template<class _Memcmp_pr , class _Obj1 , class _Obj2 , class _FTy >
using _Lex_compare_check_element_types = _Lex_compare_optimize<conditional_t< _Lex_compare_check_element_types_helper<remove_const_t<_Obj1>, remove_const_t<_Obj2>, _FTy>::value, _Memcmp_pr, void>>

Function Documentation

template<class _InIt , class _Diff >
void _Advance1 ( _InIt &  _Where,
_Diff  _Off,
input_iterator_tag   
)
inline
1052  { // increment iterator by offset, input iterators
1053  #if _ITERATOR_DEBUG_LEVEL == 2
1054  if (_Off < 0)
1055  {
1056  _DEBUG_ERROR("negative offset in advance");
1057  }
1058 
1059  #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
1060 
1061  for (; 0 < _Off; --_Off)
1062  ++_Where;
1063  }
#define _DEBUG_ERROR(mesg)
Definition: xutility:33
template<class _BidIt , class _Diff >
void _Advance1 ( _BidIt &  _Where,
_Diff  _Off,
bidirectional_iterator_tag   
)
inline
1068  { // increment iterator by offset, bidirectional iterators
1069  for (; 0 < _Off; --_Off)
1070  ++_Where;
1071  for (; _Off < 0; ++_Off)
1072  --_Where;
1073  }
template<class _RanIt , class _Diff >
void _Advance1 ( _RanIt &  _Where,
_Diff  _Off,
random_access_iterator_tag   
)
inline
1078  { // increment iterator by offset, random-access iterators
1079  _Where += _Off;
1080  }
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Check_match_counts ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr &  _Pred 
)
inline
3270  { // test if [_First1, _Last1) == permuted [_First2, _Last2), using _Pred, same lengths
3271  _Trim_matching_suffixes(_Last1, _Last2, _Pred,
3273  for (_FwdIt1 _Next1 = _First1; _Next1 != _Last1; ++_Next1)
3274  if (_Next1 == _Find_pr(_First1, _Next1, *_Next1, _Pred))
3275  { // new value, compare match counts
3276  _Iter_diff_t<_FwdIt2> _Count2 = _Count_pr(_First2, _Last2, *_Next1, _Pred);
3277  if (_Count2 == 0)
3278  return (false); // second range lacks value, fail
3279  _FwdIt1 _Skip1 = _STD next(_Next1);
3280  _Iter_diff_t<_FwdIt1> _Count1 = _Count_pr(_Skip1, _Last1, *_Next1, _Pred) + 1;
3281  if (_Count2 != _Count1)
3282  return (false); // match counts differ, fail
3283  }
3284 
3285  return (true);
3286  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
typename iterator_traits< _Iter >::difference_type _Iter_diff_t
Definition: xutility:653
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
_InIt _Find_pr(_InIt _First, _InIt _Last, const _Ty &_Val, _Pr &_Pred)
Definition: xutility:3196
void _Trim_matching_suffixes(_FwdIt1 &, _FwdIt2 &, _Pr &, forward_iterator_tag, forward_iterator_tag)
Definition: xutility:3246
_Iter_diff_t< _InIt > _Count_pr(_InIt _First, _InIt _Last, const _Ty &_Val, _Pr &_Pred)
Definition: xutility:3232
_InIt next(_InIt _First, _Iter_diff_t< _InIt > _Off=1)
Definition: xutility:1118
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Copy_backward_memmove ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest 
)
inline
2486  { // implement copy_backward-like function as memmove
2487  const char * const _First_ch = reinterpret_cast<const char *>(_First);
2488  const char * const _Last_ch = reinterpret_cast<const char *>(_Last);
2489  char * const _Dest_ch = reinterpret_cast<char *>(_Dest);
2490  const size_t _Count = _Last_ch - _First_ch;
2491  return (static_cast<_BidIt2>(
2492  _CSTD memmove(_Dest_ch - _Count, _First_ch, _Count)));
2493  }
_VCRTIMP void *__cdecl memmove(_Out_writes_bytes_all_opt_(_Size) void *_Dst, _In_reads_bytes_opt_(_Size) void const *_Src, _In_ size_t _Size)
unsigned _Dest
Definition: mbstring.h:107
_Diff _Count
Definition: algorithm:1941
#define _CSTD
Definition: yvals.h:570
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Copy_backward_unchecked ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest,
_General_ptr_iterator_tag   
)
inline
2499  { // copy [_First, _Last) backwards to [..., _Dest), no special optimization
2500  while (_First != _Last)
2501  *--_Dest = *--_Last;
2502  return (_Dest);
2503  }
unsigned _Dest
Definition: mbstring.h:107
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Copy_backward_unchecked ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest,
_Trivially_copyable_ptr_iterator_tag   
)
inline
2509  { // copy [_First, _Last) backwards to [..., _Dest), memmove optimization
2510  return (_Copy_backward_memmove(_First, _Last, _Dest));
2511  }
unsigned _Dest
Definition: mbstring.h:107
_BidIt2 _Copy_backward_memmove(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: xutility:2484
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt >
_OutIt _Copy_memmove ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
2295  { // implement copy-like function as memmove
2296  const char * const _First_ch = reinterpret_cast<const char *>(_First);
2297  const char * const _Last_ch = reinterpret_cast<const char *>(_Last);
2298  char * const _Dest_ch = reinterpret_cast<char *>(_Dest);
2299  const size_t _Count = _Last_ch - _First_ch;
2300  _CSTD memmove(_Dest_ch, _First_ch, _Count);
2301  return (reinterpret_cast<_OutIt>(_Dest_ch + _Count));
2302  }
_VCRTIMP void *__cdecl memmove(_Out_writes_bytes_all_opt_(_Size) void *_Dst, _In_reads_bytes_opt_(_Size) void const *_Src, _In_ size_t _Size)
unsigned _Dest
Definition: mbstring.h:107
_Diff _Count
Definition: algorithm:1941
#define _CSTD
Definition: yvals.h:570
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked ( _InIt  _First,
_Diff  _Count,
_OutIt  _Dest 
)
inline
2424  { // copy [_First, _First + _Count) to [_Dest, ...), choose optimization
2425  return (_Copy_n_unchecked1(_First, _Count,
2426  _Dest, _Ptr_copy_cat(_First, _Dest)));
2427  }
unsigned _Dest
Definition: mbstring.h:107
_Diff _Count
Definition: algorithm:1941
_General_ptr_iterator_tag _Ptr_copy_cat(const _Source &, const _Dest &)
Definition: xutility:864
_OutIt _Copy_n_unchecked1(_InIt _First, _Diff _Count, _OutIt _Dest, _General_ptr_iterator_tag)
Definition: xutility:2399
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked1 ( _InIt  _First,
_Diff  _Count,
_OutIt  _Dest,
_General_ptr_iterator_tag   
)
inline
2401  { // copy [_First, _First + _Count) to [_Dest, ...), no special optimization
2402  // note that we must dispatch on iterator power here to avoid incrementing
2403  // istream_iterator too many times; see LWG# 2471
2404  return (_Copy_n_unchecked2(_First, _Count,
2406  }
_OutIt _Copy_n_unchecked2(_InIt _First, _Diff _Count, _OutIt _Dest, input_iterator_tag)
Definition: xutility:2371
unsigned _Dest
Definition: mbstring.h:107
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked1 ( _InIt  _First,
_Diff  _Count,
_OutIt  _Dest,
_Trivially_copyable_ptr_iterator_tag   
)
inline
2413  { // copy [_First, _First + _Count) to [_Dest, ...), memmove optimization
2414  if (0 < _Count)
2415  return (_Copy_memmove(_First, _First + _Count, _Dest));
2416  return (_Dest);
2417  }
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 _Diff , class _OutIt >
_OutIt _Copy_n_unchecked2 ( _InIt  _First,
_Diff  _Count,
_OutIt  _Dest,
input_iterator_tag   
)
inline
2373  { // copy [_First, _First + _Count) to [_Dest, ...), input iterators
2374  if (0 < _Count)
2375  {
2376  *_Dest = *_First;
2377  while (0 < --_Count)
2378  *++_Dest = *++_First;
2379  return (++_Dest);
2380  }
2381 
2382  return (_Dest);
2383  }
unsigned _Dest
Definition: mbstring.h:107
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _Diff , class _OutIt >
_OutIt _Copy_n_unchecked2 ( _InIt  _First,
_Diff  _Count,
_OutIt  _Dest,
forward_iterator_tag   
)
inline
2390  { // copy [_First, _First + _Count) to [_Dest, ...), forward iterators
2391  for (; 0 < _Count; --_Count, (void)++_Dest, ++_First)
2392  *_Dest = *_First;
2393  return (_Dest);
2394  }
unsigned _Dest
Definition: mbstring.h:107
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _OutIt >
_OutIt _Copy_no_deprecate ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
2336  { // copy [_First, _Last) to [_Dest, ...), no _SCL_INSECURE_DEPRECATE_FN warnings
2337  _DEBUG_RANGE(_First, _Last);
2338  const auto _UFirst = _Unchecked(_First);
2339  const auto _ULast = _Unchecked(_Last);
2340  const auto _UDest = _Unchecked_n(_Dest, _Idl_distance(_UFirst, _ULast));
2341  return (_Rechecked(_Dest,
2342  _Copy_unchecked(_UFirst, _ULast, _UDest)));
2343  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
unsigned _Dest
Definition: mbstring.h:107
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Distance_unknown _Idl_distance(const _Iter &, const _Iter &)
Definition: xutility:681
_OutIt _Copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2324
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt >
_OutIt _Copy_unchecked ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
2326  { // copy [_First, _Last) to [_Dest, ...)
2327  // note: _Copy_unchecked is called directly from elsewhere in the STL
2328  return (_Copy_unchecked1(_First, _Last,
2329  _Dest, _Ptr_copy_cat(_First, _Dest)));
2330  }
unsigned _Dest
Definition: mbstring.h:107
_General_ptr_iterator_tag _Ptr_copy_cat(const _Source &, const _Dest &)
Definition: xutility:864
_FwdIt _Last
Definition: algorithm:1936
_OutIt _Copy_unchecked1(_InIt _First, _InIt _Last, _OutIt _Dest, _General_ptr_iterator_tag)
Definition: xutility:2306
template<class _InIt , class _OutIt >
_OutIt _Copy_unchecked1 ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_General_ptr_iterator_tag   
)
inline
2308  { // copy [_First, _Last) to [_Dest, ...), arbitrary iterators
2309  for (; _First != _Last; ++_Dest, (void)++_First)
2310  *_Dest = *_First;
2311  return (_Dest);
2312  }
unsigned _Dest
Definition: mbstring.h:107
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt >
_OutIt _Copy_unchecked1 ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Trivially_copyable_ptr_iterator_tag   
)
inline
2318  { // copy [_First, _Last) to [_Dest, ...), pointers to trivially copyable
2319  return (_Copy_memmove(_First, _Last, _Dest));
2320  }
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 _InIt , class _Ty , class _Pr >
_Iter_diff_t<_InIt> _Count_pr ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val,
_Pr &  _Pred 
)
inline
3233  { // count elements that match _Val, using _Pred
3235 
3236  for (; _First != _Last; ++_First)
3237  if (_Pred(*_First, _Val))
3238  ++_Count;
3239  return (_Count);
3240  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
typename iterator_traits< _Iter >::difference_type _Iter_diff_t
Definition: xutility:653
_Diff _Count
Definition: algorithm:1941
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Ty >
_Iter_diff_t<_InIt> _Count_unchecked ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val 
)
inline
3209  { // count elements that match _Val
3211 
3212  for (; _First != _Last; ++_First)
3213  if (*_First == _Val)
3214  ++_Count;
3215  return (_Count);
3216  }
typename iterator_traits< _Iter >::difference_type _Iter_diff_t
Definition: xutility:653
_Diff _Count
Definition: algorithm:1941
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt >
_Iter_diff_t<_InIt> _Distance1 ( _InIt  _First,
_InIt  _Last,
input_iterator_tag   
)
inline
1094  { // return distance between iterators; input
1095  _Iter_diff_t<_InIt> _Off = 0;
1096  for (; _First != _Last; ++_First)
1097  ++_Off;
1098 
1099  return (_Off);
1100  }
typename iterator_traits< _Iter >::difference_type _Iter_diff_t
Definition: xutility:653
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt >
_Iter_diff_t<_RanIt> _Distance1 ( _RanIt  _First,
_RanIt  _Last,
random_access_iterator_tag   
)
inline
1105  { // return distance between iterators; random-access
1106  return (_Last - _First);
1107  }
_FwdIt _Last
Definition: algorithm:1936
template<class _Iter1 , class _Iter2 , class _Pr >
false_type _Equal_memcmp_is_safe ( const _Iter1 &  ,
const _Iter2 &  ,
const _Pr &   
)
inline
2820  { // return equal optimization category for arbitrary iterators
2821  return {};
2822  }
template<class _Obj1 , class _Obj2 , class _Pr >
_Equal_memcmp_is_safe_helper< remove_const_t<_Obj1>, remove_const_t<_Obj2>, _Pr>::type _Equal_memcmp_is_safe ( _Obj1 *const &  ,
_Obj2 *const &  ,
const _Pr &   
)
inline
2832  { // return equal optimization category for pointers
2833  return {};
2834  }
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_no_deprecate ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_Pr &  _Pred 
)
inline
2875  { // compare [_First1, _Last1) to [_First2, ...) using _Pred, no _SCL_INSECURE_DEPRECATE_FN warnings
2876  _DEBUG_RANGE(_First1, _Last1);
2877  const auto _UFirst1 = _Unchecked(_First1);
2878  const auto _ULast1 = _Unchecked(_Last1);
2879  const auto _UFirst2 = _Unchecked_n(_First2, _Idl_distance(_UFirst1, _ULast1));
2880  return (_Equal_unchecked(_UFirst1, _ULast1, _UFirst2, _Pred));
2881  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Distance_unknown _Idl_distance(const _Iter &, const _Iter &)
Definition: xutility:681
bool _Equal_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred)
Definition: xutility:2863
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_Pr &  _Pred 
)
inline
2865  { // compare [_First1, _Last1) to [_First2, ...) using _Pred, choose optimization
2866  return (_Equal_unchecked1(_First1, _Last1, _First2, _Pred,
2867  _Equal_memcmp_is_safe(_First1, _First2, _Pred)));
2868  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
false_type _Equal_memcmp_is_safe(const _Iter1 &, const _Iter2 &, const _Pr &)
Definition: xutility:2819
bool _Equal_unchecked1(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred, false_type)
Definition: xutility:2839
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr &  _Pred,
input_iterator_tag  ,
input_iterator_tag   
)
inline
2936  { // compare [_First1, _Last1) to [_First2, _Last2)
2937  // using _Pred, arbitrary iterators
2938  for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, (void)++_First2)
2939  if (!_Pred(*_First1, *_First2))
2940  return (false);
2941  return (_First1 == _Last1 && _First2 == _Last2);
2942  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr &  _Pred,
random_access_iterator_tag  ,
random_access_iterator_tag   
)
inline
2950  { // compare [_First1, _Last1) to [_First2, _Last2)
2951  // using _Pred, random-access iterators
2952  if (_Last1 - _First1 != _Last2 - _First2)
2953  return (false);
2954  return (_Equal_unchecked(_First1, _Last1, _First2, _Pred));
2955  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
bool _Equal_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred)
Definition: xutility:2863
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked1 ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_Pr &  _Pred,
false_type   
)
inline
2841  { // compare [_First1, _Last1) to [_First2, ...) using _Pred, no special optimization
2842  for (; _First1 != _Last1; ++_First1, (void)++_First2)
2843  if (!_Pred(*_First1, *_First2))
2844  return (false);
2845  return (true);
2846  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Equal_unchecked1 ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_Pr &  ,
true_type   
)
inline
2853  { // compare [_First1, _Last1) to [_First2, ...) using _Pr, memcmp optimization
2854  const char * const _First1_ch = reinterpret_cast<const char *>(_First1);
2855  const char * const _First2_ch = reinterpret_cast<const char *>(_First2);
2856  const size_t _Count = reinterpret_cast<const char *>(_Last1) - _First1_ch;
2857  return (_CSTD memcmp(_First1_ch, _First2_ch, _Count) == 0);
2858  }
_Check_return_ int __cdecl memcmp(_In_reads_bytes_(_Size) void const *_Buf1, _In_reads_bytes_(_Size) void const *_Buf2, _In_ size_t _Size)
_Diff _Count
Definition: algorithm:1941
#define _CSTD
Definition: yvals.h:570
template<class _FwdIt , class _Ty >
_Fill_memset_is_safe_helper<_FwdIt, _Ty>::type _Fill_memset_is_safe ( const _FwdIt &  ,
const _Ty &   
)
inline
2681  { // type deduction for _Fill_memset_is_safe_helper
2682  return {};
2683  }
template<class _OutIt , class _Diff , class _Ty >
_OutIt _Fill_n_unchecked ( _OutIt  _Dest,
_Diff  _Count,
const _Ty &  _Val 
)
inline
2744  { // copy _Val _Count times through [_Dest, ...), choose optimization
2745  // note: _Fill_n_unchecked is called directly from elsewhere in the STL
2747  }
unsigned _Dest
Definition: mbstring.h:107
_Fill_memset_is_safe_helper< _FwdIt, _Ty >::type _Fill_memset_is_safe(const _FwdIt &, const _Ty &)
Definition: xutility:2680
_Diff _Count
Definition: algorithm:1941
_OutIt _Fill_n_unchecked1(_OutIt _Dest, _Diff _Count, const _Ty &_Val, false_type)
Definition: xutility:2719
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _OutIt , class _Diff , class _Ty >
_OutIt _Fill_n_unchecked1 ( _OutIt  _Dest,
_Diff  _Count,
const _Ty &  _Val,
false_type   
)
inline
2720  { // copy _Val _Count times through [_Dest, ...), no special optimization
2721  for (; 0 < _Count; --_Count, (void)++_Dest)
2722  *_Dest = _Val;
2723  return (_Dest);
2724  }
unsigned _Dest
Definition: mbstring.h:107
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
_Diff _Count
Definition: algorithm:1941
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _OutIt , class _Diff , class _Ty >
_OutIt _Fill_n_unchecked1 ( _OutIt  _Dest,
_Diff  _Count,
const _Ty &  _Val,
true_type   
)
inline
2730  { // copy _Val _Count times through [_Dest, ...), memset optimization
2731  if (0 < _Count)
2732  {
2733  _CSTD memset(_Dest, _Val, _Count);
2734  return (_Dest + _Count);
2735  }
2736 
2737  return (_Dest);
2738  }
unsigned _Dest
Definition: mbstring.h:107
_Diff _Count
Definition: algorithm:1941
#define _CSTD
Definition: yvals.h:570
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _FwdIt , class _Ty >
void _Fill_unchecked ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
2703  { // copy _Val through [_First, _Last), choose optimization
2704  _Fill_unchecked1(_First, _Last, _Val, _Fill_memset_is_safe(_First, _Val));
2705  }
_Fill_memset_is_safe_helper< _FwdIt, _Ty >::type _Fill_memset_is_safe(const _FwdIt &, const _Ty &)
Definition: xutility:2680
void _Fill_unchecked1(_FwdIt _First, _FwdIt _Last, const _Ty &_Val, false_type)
Definition: xutility:2687
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Ty >
void _Fill_unchecked1 ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
false_type   
)
inline
2688  { // copy _Val through [_First, _Last), no special optimization
2689  for (; _First != _Last; ++_First)
2690  *_First = _Val;
2691  }
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Ty >
void _Fill_unchecked1 ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
true_type   
)
inline
2696  { // copy _Val through [_First, _Last), memset optimization
2697  _CSTD memset(_First, _Val, _Last - _First);
2698  }
#define _CSTD
Definition: yvals.h:570
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Ty , class _Pr >
_InIt _Find_pr ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val,
_Pr &  _Pred 
)
inline
3197  { // find first matching _Val, using _Pred
3198  for (; _First != _Last; ++_First)
3199  if (_Pred(*_First, _Val))
3200  break;
3201  return (_First);
3202  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Ty >
_InIt _Find_unchecked ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val 
)
inline
3169  { // find first matching _Val; choose optimization
3170  // activate optimization for pointers to (const) bytes and integral values
3171  typedef integral_constant<bool,
3179  > _Memchr_opt;
3180  return (_Find_unchecked1(_First, _Last, _Val, _Memchr_opt()));
3181  }
Definition: xtr1common:23
#define bool
Definition: stdbool.h:15
_InIt _Find_unchecked1(_InIt _First, _InIt _Last, const _Ty &_Val, true_type)
Definition: xutility:3147
Definition: xtr1common:237
Definition: xtr1common:87
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Ty >
_InIt _Find_unchecked1 ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val,
true_type   
)
inline
3148  { // find first byte matching integral _Val
3149  if (!_Within_limits(_First, _Val))
3150  return (_Last);
3151  _First = static_cast<_InIt>(_CSTD memchr(
3152  _First, static_cast<unsigned char>(_Val), _Last - _First));
3153  return (_First ? _First : _Last);
3154  }
bool _Within_limits(const _Ty &_Val, true_type, true_type, _Any_tag)
Definition: xutility:3101
_CRT_BEGIN_C_HEADER _Check_return_ _VCRTIMP void _CONST_RETURN *__cdecl memchr(_In_reads_bytes_opt_(_MaxCount) void const *_Buf, _In_ int _Val, _In_ size_t _MaxCount)
#define _CSTD
Definition: yvals.h:570
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Ty >
_InIt _Find_unchecked1 ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val,
false_type   
)
inline
3159  { // find first matching _Val
3160  for (; _First != _Last; ++_First)
3161  if (*_First == _Val)
3162  break;
3163  return (_First);
3164  }
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _Iter >
_Distance_unknown _Idl_distance ( const _Iter &  ,
const _Iter &   
)
inline
682  { // always give up under IDL0 because _Unchecked_n blindly unwraps there
683  return {};
684  }
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_no_deprecate ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_Pr &  _Pred 
)
inline
3312  { // test if [_First1, _Last1) == permuted [_First2, ...), using _Pred, no deprecation warnings
3313  _DEBUG_RANGE(_First1, _Last1);
3314  const auto _UFirst1 = _Unchecked(_First1);
3315  const auto _ULast1 = _Unchecked(_Last1);
3316  const auto _UFirst2 = _Unchecked_n(_First2, _Idl_distance(_UFirst1, _ULast1));
3317  return (_Is_permutation_unchecked(_UFirst1, _ULast1, _UFirst2, _Pred));
3318  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
bool _Is_permutation_unchecked(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr &_Pred)
Definition: xutility:3292
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Distance_unknown _Idl_distance(const _Iter &, const _Iter &)
Definition: xutility:681
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_unchecked ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_Pr &  _Pred 
)
inline
3294  { // test if [_First1, _Last1) == permuted [_First2, ...), using _Pred
3295  for (; _First1 != _Last1; ++_First1, (void)++_First2)
3296  if (!_Pred(*_First1, *_First2))
3297  { // found first inequality, check match counts in suffix
3298  _FwdIt2 _Last2 = _STD next(_First2,
3299  _STD distance(_First1, _Last1));
3300  return (_Check_match_counts(_First1, _Last1,
3301  _First2, _Last2, _Pred));
3302  }
3303 
3304  return (true);
3305  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_Iter_diff_t< _InIt > distance(_InIt _First, _InIt _Last)
Definition: xutility:1111
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
bool _Check_match_counts(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr &_Pred)
Definition: xutility:3268
_InIt next(_InIt _First, _Iter_diff_t< _InIt > _Off=1)
Definition: xutility:1118
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_unchecked ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr &  _Pred,
forward_iterator_tag  ,
forward_iterator_tag   
)
inline
3373  { // test if [_First1, _Last1) == permuted [_First2, _Last2),
3374  // using _Pred, arbitrary iterators
3375  for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, (void)++_First2)
3376  if (!_Pred(*_First1, *_First2))
3377  { // found first inequality, check match counts in suffix
3378  if (_STD distance(_First1, _Last1)
3379  != _STD distance(_First2, _Last2))
3380  return (false); // lengths differ, fail
3381  else
3382  return (_Check_match_counts(_First1, _Last1,
3383  _First2, _Last2, _Pred));
3384  }
3385 
3386  return (_First1 == _Last1 && _First2 == _Last2);
3387  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_Iter_diff_t< _InIt > distance(_InIt _First, _InIt _Last)
Definition: xutility:1111
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
bool _Check_match_counts(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr &_Pred)
Definition: xutility:3268
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool _Is_permutation_unchecked ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr &  _Pred,
random_access_iterator_tag  ,
random_access_iterator_tag   
)
inline
3395  { // test if [_First1, _Last1) == permuted [_First2, _Last2),
3396  // using _Pred, random-access iterators
3397  if (_Last1 - _First1 != _Last2 - _First2)
3398  return (false);
3399  return (_Is_permutation_unchecked(_First1, _Last1, _First2, _Pred));
3400  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
bool _Is_permutation_unchecked(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr &_Pred)
Definition: xutility:3292
template<class _InIt1 , class _InIt2 , class _Pr >
_Lex_compare_optimize<void> _Lex_compare_memcmp_classify ( const _InIt1 &  ,
const _InIt2 &  ,
const _Pr &   
)
inline
3023  { // return lex_compare optimization category for arbitrary iterators
3024  // note that overload selecting greater<_FTy> is in <xfunctional>
3025  return {};
3026  }
template<class _Obj1 , class _Obj2 , class _FTy >
_Lex_compare_check_element_types<less<int>, _Obj1, _Obj2, _FTy> _Lex_compare_memcmp_classify ( _Obj1 *const &  ,
_Obj2 *const &  ,
const less< _FTy > &   
)
inline
3033  { // return lex_compare optimization category for pointer iterators and less<_FTy>
3034  return {};
3035  }
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Lex_compare_unchecked ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr &  _Pred 
)
inline
3072  { // order [_First1, _Last1) vs. [_First2, _Last2) using _Pred, choose optimization
3073  return (_Lex_compare_unchecked1(_First1, _Last1, _First2, _Last2, _Pred,
3074  _Lex_compare_memcmp_classify(_First1, _First2, _Pred)));
3075  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
bool _Lex_compare_unchecked1(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr &_Pred, _Lex_compare_optimize< void >)
Definition: xutility:3040
_Lex_compare_optimize< void > _Lex_compare_memcmp_classify(const _InIt1 &, const _InIt2 &, const _Pr &)
Definition: xutility:3022
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Lex_compare_unchecked1 ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr &  _Pred,
_Lex_compare_optimize< void  
)
inline
3042  { // order [_First1, _Last1) vs. [_First2, _Last2) using _Pred, no special optimization
3043  for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, (void)++_First2)
3044  { // something to compare, do it
3045  if (_DEBUG_LT_PRED(_Pred, *_First1, *_First2))
3046  return (true);
3047  else if (_Pred(*_First2, *_First1))
3048  return (false);
3049  }
3050 
3051  return (_First1 == _Last1 && _First2 != _Last2);
3052  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _DEBUG_LT_PRED(pred, x, y)
Definition: xutility:900
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
template<class _InIt1 , class _InIt2 , class _Pr , class _Memcmp_pr >
bool _Lex_compare_unchecked1 ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr &  ,
_Lex_compare_optimize< _Memcmp_pr >   
)
inline
3060  { // order [_First1, _Last1) vs. [_First2, _Last2) using _Pr, memcmp optimization
3061  const size_t _Num1 = _Last1 - _First1;
3062  const size_t _Num2 = _Last2 - _First2;
3063  const int _Ans = _CSTD memcmp(_First1, _First2, _Num1 < _Num2 ? _Num1 : _Num2);
3064  return (_Memcmp_pr{}(_Ans, 0) || _Ans == 0 && _Num1 < _Num2);
3065  }
_Check_return_ int __cdecl memcmp(_In_reads_bytes_(_Size) void const *_Buf1, _In_reads_bytes_(_Size) void const *_Buf2, _In_ size_t _Size)
#define _CSTD
Definition: yvals.h:570
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Move_backward_unchecked ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest 
)
inline
2615  { // move [_First, _Last) backwards to [..., _Dest), choose optimization
2616  // note: _Move_backward_unchecked is called directly from elsewhere in the STL
2617  return (_Move_backward_unchecked1(_First, _Last,
2618  _Dest, _Ptr_move_cat(_First, _Dest)));
2619  }
unsigned _Dest
Definition: mbstring.h:107
_BidIt2 _Move_backward_unchecked1(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest, _General_ptr_iterator_tag)
Definition: xutility:2595
_General_ptr_iterator_tag _Ptr_move_cat(const _Source &, const _Dest &)
Definition: xutility:881
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Move_backward_unchecked1 ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest,
_General_ptr_iterator_tag   
)
inline
2597  { // move [_First, _Last) backwards to [..., _Dest), no special optimization
2598  while (_First != _Last)
2599  *--_Dest = _STD move(*--_Last);
2600  return (_Dest);
2601  }
unsigned _Dest
Definition: mbstring.h:107
_OutIt move(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2572
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt1 , class _BidIt2 >
_BidIt2 _Move_backward_unchecked1 ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest,
_Trivially_copyable_ptr_iterator_tag   
)
inline
2607  { // move [_First, _Last) backwards to [..., _Dest), memmove optimization
2608  return (_Copy_backward_memmove(_First, _Last, _Dest));
2609  }
unsigned _Dest
Definition: mbstring.h:107
_BidIt2 _Copy_backward_memmove(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: xutility:2484
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt >
_OutIt _Move_no_deprecate ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
2560  { // move [_First, _Last) to [_Dest, ...), no _SCL_INSECURE_DEPRECATE_FN warnings
2561  // note: _Move_no_deprecate is called directly from elsewhere in the STL
2562  _DEBUG_RANGE(_First, _Last);
2563  const auto _UFirst = _Unchecked(_First);
2564  const auto _ULast = _Unchecked(_Last);
2565  const auto _UDest = _Unchecked_n(_Dest, _Idl_distance(_UFirst, _ULast));
2566  return (_Rechecked(_Dest,
2567  _Move_unchecked(_UFirst, _ULast, _UDest)));
2568  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
unsigned _Dest
Definition: mbstring.h:107
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
_OutIt _Move_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2548
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Distance_unknown _Idl_distance(const _Iter &, const _Iter &)
Definition: xutility:681
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt >
_OutIt _Move_unchecked ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
2550  { // move [_First, _Last) to [_Dest, ...), choose optimization
2551  // note: _Move_unchecked is called directly from elsewhere in the STL
2552  return (_Move_unchecked1(_First, _Last,
2553  _Dest, _Ptr_move_cat(_First, _Dest)));
2554  }
_OutIt _Move_unchecked1(_InIt _First, _InIt _Last, _OutIt _Dest, _General_ptr_iterator_tag)
Definition: xutility:2530
unsigned _Dest
Definition: mbstring.h:107
_General_ptr_iterator_tag _Ptr_move_cat(const _Source &, const _Dest &)
Definition: xutility:881
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt >
_OutIt _Move_unchecked1 ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_General_ptr_iterator_tag   
)
inline
2532  { // move [_First, _Last) to [_Dest, ...), no special optimization
2533  for (; _First != _Last; ++_Dest, (void)++_First)
2534  *_Dest = _STD move(*_First);
2535  return (_Dest);
2536  }
unsigned _Dest
Definition: mbstring.h:107
_OutIt move(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2572
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *terminate_handler)()
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt >
_OutIt _Move_unchecked1 ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Trivially_copyable_ptr_iterator_tag   
)
inline
2542  { // move [_First, _Last) to [_Dest, ...), memmove optimization
2543  return (_Copy_memmove(_First, _Last, _Dest));
2544  }
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 _Iterator >
constexpr _Iterator _Operator_arrow ( _Iterator  _Target,
true_type   
)
1144  { // return operator-> where _Iterator is a pointer
1145  return (_Target);
1146  }
const void * _Target(const type_info &_Info) const _NOEXCEPT
Definition: functional:408
template<class _Iterator >
decltype(auto) constexpr _Operator_arrow ( _Iterator &&  _Target,
false_type   
)
1150  { // return operator-> where _Iterator is a class type
1151  return (_STD forward<_Iterator>(_Target).operator->());
1152  }
const void * _Target(const type_info &_Info) const _NOEXCEPT
Definition: functional:408
template<class _Source , class _Dest >
_General_ptr_iterator_tag _Ptr_copy_cat ( const _Source ,
const _Dest  
)
inline
865  { // return pointer copy optimization category for arbitrary iterators
866  return {};
867  }
template<class _Source , class _Dest >
conditional_t<is_trivially_assignable<_Dest&, _Source&>::value, typename _Ptr_cat_helper<remove_const_t<_Source>, _Dest>::type, _General_ptr_iterator_tag> _Ptr_copy_cat ( _Source *const &  ,
_Dest *const &   
)
inline
875  { // return pointer copy optimization category for pointers
876  return {};
877  }
template<class _Source , class _Dest >
_General_ptr_iterator_tag _Ptr_move_cat ( const _Source ,
const _Dest  
)
inline
882  { // return pointer move optimization category for arbitrary iterators
883  return {};
884  }
template<class _Source , class _Dest >
conditional_t<is_trivially_assignable<_Dest&, _Source>::value, typename _Ptr_cat_helper<remove_const_t<_Source>, _Dest>::type, _General_ptr_iterator_tag> _Ptr_move_cat ( _Source *const &  ,
_Dest *const &   
)
inline
892  { // return pointer move optimization category for pointers
893  return {};
894  }
template<class _Iter , class _UIter >
_CONSTEXPR14 _Iter& _Rechecked ( _Iter &  _Dest,
_UIter  _Src 
)
480  { // reset checked from unchecked, generic
481  _Dest = _Src;
482  return (_Dest);
483  }
unsigned _Dest
Definition: mbstring.h:107
_In_ size_t _Out_opt_ int _In_z_ unsigned char const * _Src
Definition: mbstring.h:1039
template<class _Ty , size_t _Size>
_Array_const_iterator<_Ty, _Size>& _Rechecked ( _Array_const_iterator< _Ty, _Size > &  _Iter,
typename _Array_const_iterator< _Ty, _Size >::_Unchecked_type  _Right 
)
inline
1898  { // convert to checked
1899  return (_Iter._Rechecked(_Right));
1900  }
_Myiter & _Rechecked(_Unchecked_type _Right)
Definition: xutility:1573
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty , size_t _Size>
_Array_iterator<_Ty, _Size>& _Rechecked ( _Array_iterator< _Ty, _Size > &  _Iter,
typename _Array_iterator< _Ty, _Size >::_Unchecked_type  _Right 
)
inline
2034  { // convert to checked
2035  return (_Iter._Rechecked(_Right));
2036  }
_Myiter & _Rechecked(_Unchecked_type _Right)
Definition: xutility:1939
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _BidIt >
void _Reverse_unchecked ( _BidIt  _First,
_BidIt  _Last 
)
inline
3429  { // reverse elements in [_First, _Last), bidirectional iterators
3430  for (; _First != _Last && _First != --_Last; ++_First)
3431  _STD iter_swap(_First, _Last);
3432  }
void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)
Definition: utility:38
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt >
pair<_BidIt, _BidIt> _Reverse_until_sentinel_unchecked ( _BidIt  _First,
_BidIt  _Sentinel,
_BidIt  _Last 
)
inline
3468  { // reverse until either _First or _Last hits _Sentinel
3469  while (_First != _Sentinel && _Last != _Sentinel)
3470  _STD iter_swap(_First++, --_Last);
3471  return (_STD make_pair(_First, _Last));
3472  }
void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)
Definition: utility:38
constexpr pair< typename _Unrefwrap< _Ty1 >::type, typename _Unrefwrap< _Ty2 >::type > make_pair(_Ty1 &&_Val1, _Ty2 &&_Val2)
Definition: utility:340
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt >
_FwdIt _Rotate_unchecked ( _FwdIt  _First,
_FwdIt  _Mid,
_FwdIt  _Last 
)
inline
3497  { // rotate [_First, _Last)
3498  if (_First == _Mid)
3499  return (_Last);
3500  if (_Mid == _Last)
3501  return (_First);
3502  return (_Rotate_unchecked1(_First, _Mid, _Last, _Iter_cat_t<_FwdIt>()));
3503  }
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
_FwdIt _Rotate_unchecked1(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last, forward_iterator_tag)
Definition: xutility:3443
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt >
_FwdIt _Rotate_unchecked1 ( _FwdIt  _First,
_FwdIt  _Mid,
_FwdIt  _Last,
forward_iterator_tag   
)
inline
3445  { // rotate [_First, _Last), forward iterators
3446  for (_FwdIt _Next = _Mid, _Res = _Last; ; )
3447  { // swap [_First, ...) into place
3448  _STD iter_swap(_First, _Next);
3449  if (++_First == _Mid)
3450  { // quit if done, else define next interval
3451  if (++_Next == _Last)
3452  return (_Res == _Last ? _Mid : _Res);
3453  else
3454  _Mid = _Next; // mark end of next interval
3455  }
3456  else if (++_Next == _Last)
3457  { // wrap to last end
3458  if (_Res == _Last)
3459  _Res = _First;
3460  _Next = _Mid;
3461  }
3462  }
3463  }
void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)
Definition: utility:38
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt >
_BidIt _Rotate_unchecked1 ( _BidIt  _First,
_BidIt  _Mid,
_BidIt  _Last,
bidirectional_iterator_tag   
)
inline
3477  { // rotate [_First, _Last), bidirectional iterators
3478  _Reverse_unchecked(_First, _Mid);
3479  _Reverse_unchecked(_Mid, _Last);
3481  _Reverse_unchecked(_Tmp.first, _Tmp.second);
3482  return (_Mid != _Tmp.first ? _Tmp.first : _Tmp.second);
3483  }
_Ty2 second
Definition: utility:271
_Ty1 first
Definition: utility:270
void _Reverse_unchecked(_BidIt _First, _BidIt _Last)
Definition: xutility:3428
pair< _BidIt, _BidIt > _Reverse_until_sentinel_unchecked(_BidIt _First, _BidIt _Sentinel, _BidIt _Last)
Definition: xutility:3466
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt >
_RanIt _Rotate_unchecked1 ( _RanIt  _First,
_RanIt  _Mid,
_RanIt  _Last,
random_access_iterator_tag   
)
inline
3488  { // rotate [_First, _Last), random-access iterators
3489  _Reverse_unchecked(_First, _Mid);
3490  _Reverse_unchecked(_Mid, _Last);
3491  _Reverse_unchecked(_First, _Last);
3492  return (_First + (_Last - _Mid));
3493  }
void _Reverse_unchecked(_BidIt _First, _BidIt _Last)
Definition: xutility:3428
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
void _Trim_matching_suffixes ( _FwdIt1 &  ,
_FwdIt2 &  ,
_Pr &  ,
forward_iterator_tag  ,
forward_iterator_tag   
)
inline
3248  { // trim matching suffixes, forward iterators (do nothing)
3249  }
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
void _Trim_matching_suffixes ( _FwdIt1 &  _Last1,
_FwdIt2 &  _Last2,
_Pr &  _Pred,
bidirectional_iterator_tag  ,
bidirectional_iterator_tag   
)
inline
3256  { // trim matching suffixes, bidirectional iterators
3257  // assumptions: same lengths, non-empty, !_Pred(*_First1, *_First2)
3258  while (_Pred(*--_Last1, *--_Last2))
3259  ; // find last inequality
3260  ++_Last1;
3261  ++_Last2;
3262  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
template<class _Iter >
constexpr _Iter _Unchecked ( _Iter  _Src)
450  { // construct unchecked from checked, generic
451  return (_Src);
452  }
_In_ size_t _Out_opt_ int _In_z_ unsigned char const * _Src
Definition: mbstring.h:1039
template<class _Ty , size_t _Size>
_Array_const_iterator<_Ty, _Size>::_Unchecked_type _Unchecked ( _Array_const_iterator< _Ty, _Size _Iter)
inline
1888  { // convert to unchecked
1889  return (_Iter._Unchecked());
1890  }
_Unchecked_type _Unchecked() const
Definition: xutility:1579
template<class _Ty , size_t _Size>
_Array_iterator<_Ty, _Size>::_Unchecked_type _Unchecked ( _Array_iterator< _Ty, _Size _Iter)
inline
2024  { // convert to unchecked
2025  return (_Iter._Unchecked());
2026  }
_Unchecked_type _Unchecked() const
Definition: xutility:1945
template<class _Iter , class _Diff >
auto _Unchecked_n ( _Iter  _Src,
_Diff   
)
inline
711  { // blindly unwrap _Src under IDL == 0
712  return (_Unchecked(_Src));
713  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
_In_ size_t _Out_opt_ int _In_z_ unsigned char const * _Src
Definition: mbstring.h:1039
template<class _Iter , class _Diff >
auto _Unchecked_n_backward ( _Iter  _Src,
_Diff   
)
inline
755  { // blindly unwrap _Src under IDL == 0
756  return (_Unchecked(_Src));
757  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
_In_ size_t _Out_opt_ int _In_z_ unsigned char const * _Src
Definition: mbstring.h:1039
template<class _Ty >
bool _Within_limits ( const _Ty &  _Val,
true_type  ,
true_type  ,
_Any_tag   
)
inline
3102  { // signed _Elem, signed _Ty
3103  return (SCHAR_MIN <= _Val && _Val <= SCHAR_MAX);
3104  }
#define SCHAR_MIN
Definition: limits.h:18
#define SCHAR_MAX
Definition: limits.h:19
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _Ty >
bool _Within_limits ( const _Ty &  _Val,
true_type  ,
false_type  ,
true_type   
)
inline
3108  { // signed _Elem, unsigned _Ty, -1 == static_cast<_Ty>(-1)
3109  return (_Val <= SCHAR_MAX || static_cast<_Ty>(SCHAR_MIN) <= _Val);
3110  }
#define SCHAR_MIN
Definition: limits.h:18
#define SCHAR_MAX
Definition: limits.h:19
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _Ty >
bool _Within_limits ( const _Ty &  _Val,
true_type  ,
false_type  ,
false_type   
)
inline
3114  { // signed _Elem, unsigned _Ty, -1 != static_cast<_Ty>(-1)
3115  return (_Val <= SCHAR_MAX);
3116  }
#define SCHAR_MAX
Definition: limits.h:19
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _Ty >
bool _Within_limits ( const _Ty &  _Val,
false_type  ,
true_type  ,
_Any_tag   
)
inline
3120  { // unsigned _Elem, signed _Ty
3121  return (0 <= _Val && _Val <= UCHAR_MAX);
3122  }
_FwdIt const _Ty _Val
Definition: algorithm:1938
#define UCHAR_MAX
Definition: limits.h:20
template<class _Ty >
bool _Within_limits ( const _Ty &  _Val,
false_type  ,
false_type  ,
_Any_tag   
)
inline
3126  { // unsigned _Elem, unsigned _Ty
3127  return (_Val <= UCHAR_MAX);
3128  }
_FwdIt const _Ty _Val
Definition: algorithm:1938
#define UCHAR_MAX
Definition: limits.h:20
template<class _InIt , class _Ty >
bool _Within_limits ( _InIt  ,
const _Ty &  _Val 
)
inline
3133  { // check whether _Val is within the limits of _Elem
3134  typedef typename remove_pointer<_InIt>::type _Elem;
3136  integral_constant<bool, -1 == static_cast<_Ty>(-1)>()));
3137  }
Definition: xtr1common:23
bool _Within_limits(const _Ty &_Val, true_type, true_type, _Any_tag)
Definition: xutility:3101
_Ty type
Definition: type_traits:234
Definition: type_traits:799
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _InIt >
bool _Within_limits ( _InIt  ,
const bool  
)
inline
3141  { // bools are always within the limits of _Elem
3142  return (true);
3143  }
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xinvalid_argument ( _In_z_ const char )
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xlength_error ( _In_z_ const char )
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xout_of_range ( _In_z_ const char )
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xoverflow_error ( _In_z_ const char )
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Xruntime_error ( _In_z_ const char )
template<class _InIt , class _Diff >
void advance ( _InIt &  _Where,
_Diff  _Off 
)
inline
1085  { // increment iterator by offset, arbitrary iterators
1086  // we remove_const_t before _Iter_cat_t for better diagnostics if the user passes an iterator that is const
1087  _Advance1(_Where, _Off, _Iter_cat_t<remove_const_t<_InIt>>());
1088  }
typename remove_const< _Ty >::type remove_const_t
Definition: type_traits:2042
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
void _Advance1(_InIt &_Where, _Diff _Off, input_iterator_tag)
Definition: xutility:1051
template<class _Container >
back_insert_iterator<_Container> back_inserter ( _Container &  _Cont)
inline
3751  { // return a back_insert_iterator
3752  return (back_insert_iterator<_Container>(_Cont));
3753  }
Definition: xutility:3699
template<class _Container >
auto begin ( _Container &  _Cont) -> decltype(_Cont.begin())
inline
1354  { // get beginning of sequence
1355  return (_Cont.begin());
1356  }
template<class _Container >
auto begin ( const _Container &  _Cont) -> decltype(_Cont.begin())
inline
1360  { // get beginning of sequence
1361  return (_Cont.begin());
1362  }
template<class _Ty , size_t _Size>
constexpr _Ty* begin ( _Ty(&)  _Array[_Size])
inline
1379  { // get beginning of array
1380  return (_Array);
1381  }
template<class _Container >
constexpr auto cbegin ( const _Container &  _Cont) -> decltype(_STD begin(_Cont))
inline
1395  { // get beginning of sequence
1396  return (_STD begin(_Cont));
1397  }
auto begin(_Container &_Cont) -> decltype(_Cont.begin())
Definition: xutility:1353
template<class _Container >
constexpr auto cend ( const _Container &  _Cont) -> decltype(_STD end(_Cont))
inline
1403  { // get end of sequence
1404  return (_STD end(_Cont));
1405  }
auto end(_Container &_Cont) -> decltype(_Cont.end())
Definition: xutility:1365
template<class _InIt , class _OutIt >
_OutIt copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
2349  { // copy [_First, _Last) to [_Dest, ...)
2351  return (_Copy_no_deprecate(_First, _Last, _Dest));
2352  }
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2347
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
unsigned _Dest
Definition: mbstring.h:107
_OutIt _Copy_no_deprecate(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2334
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt1 , class _BidIt2 >
_BidIt2 copy_backward ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest 
)
inline
2517  { // copy [_First, _Last) backwards to [..., _Dest)
2519  _DEBUG_RANGE(_First, _Last);
2520  const auto _UFirst = _Unchecked(_First);
2521  const auto _ULast = _Unchecked(_Last);
2522  const auto _UDest = _Unchecked_n_backward(_Dest, _Idl_distance(_UFirst, _ULast));
2523  return (_Rechecked(_Dest,
2524  _Copy_backward_unchecked(_UFirst, _ULast, _UDest, _Ptr_copy_cat(_UFirst, _UDest))));
2525  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
unsigned _Dest
Definition: mbstring.h:107
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
_BidIt2 copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: xutility:2515
_Distance_unknown _Idl_distance(const _Iter &, const _Iter &)
Definition: xutility:681
auto _Unchecked_n_backward(_Iter _Src, _Diff)
Definition: xutility:754
_General_ptr_iterator_tag _Ptr_copy_cat(const _Source &, const _Dest &)
Definition: xutility:864
_FwdIt _Last
Definition: algorithm:1936
_BidIt2 _Copy_backward_unchecked(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest, _General_ptr_iterator_tag)
Definition: xutility:2497
template<class _InIt , class _Diff , class _OutIt >
_OutIt copy_n ( _InIt  _First,
_Diff  _Count,
_OutIt  _Dest 
)
inline
2434  { // copy [_First, _First + _Count) to [_Dest, ...)
2435  // Note that we _DEPRECATE_UNCHECKED _Dest because _Count logically goes with _First
2437  return (_Rechecked(_Dest,
2439  }
_OutIt copy_n(_InIt _First, _Diff _Count, _OutIt _Dest)
Definition: xutility:2432
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
unsigned _Dest
Definition: mbstring.h:107
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_OutIt _Copy_n_unchecked(_InIt _First, _Diff _Count, _OutIt _Dest)
Definition: xutility:2422
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _Ty >
_Iter_diff_t<_InIt> count ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val 
)
inline
3222  { // count elements that match _Val
3223  _DEBUG_RANGE(_First, _Last);
3224  return (_Count_unchecked(_Unchecked(_First), _Unchecked(_Last), _Val));
3225  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
_Iter_diff_t< _InIt > _Count_unchecked(_InIt _First, _InIt _Last, const _Ty &_Val)
Definition: xutility:3208
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _Container >
auto crbegin ( const _Container &  _Cont) -> decltype(_STD rbegin(_Cont))
inline
1464  { // get beginning of reversed sequence
1465  return (_STD rbegin(_Cont));
1466  }
auto rbegin(_Container &_Cont) -> decltype(_Cont.rbegin())
Definition: xutility:1409
template<class _Container >
auto crend ( const _Container &  _Cont) -> decltype(_STD rend(_Cont))
inline
1471  { // get end of reversed sequence
1472  return (_STD rend(_Cont));
1473  }
auto rend(_Container &_Cont) -> decltype(_Cont.rend())
Definition: xutility:1421
template<class _Container >
constexpr auto data ( _Container &  _Cont) -> decltype(_Cont.data())
inline
1514  { // get data() for container
1515  return (_Cont.data());
1516  }
template<class _Container >
constexpr auto data ( const _Container &  _Cont) -> decltype(_Cont.data())
inline
1521  { // get pointer to data of const container
1522  return (_Cont.data());
1523  }
template<class _Ty , size_t _Size>
constexpr _Ty* data ( _Ty(&)  _Array[_Size])
inline
1528  { // get pointer to data of array
1529  return (_Array);
1530  }
template<class _Elem >
constexpr const _Elem* data ( initializer_list< _Elem >  _Ilist)
inline
1535  { // get pointer to data of initializer_list
1536  return (_Ilist.begin());
1537  }
constexpr const _Elem * begin() const _NOEXCEPT
Definition: initializer_list:39
template<class _InIt >
_Iter_diff_t<_InIt> distance ( _InIt  _First,
_InIt  _Last 
)
inline
1112  { // return distance between iterators
1113  return (_Distance1(_First, _Last, _Iter_cat_t<_InIt>()));
1114  }
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
_Iter_diff_t< _InIt > _Distance1(_InIt _First, _InIt _Last, input_iterator_tag)
Definition: xutility:1093
_FwdIt _Last
Definition: algorithm:1936
template<class _Container >
constexpr auto empty ( const _Container &  _Cont) -> decltype(_Cont.empty())
inline
1493  { // get empty() for container
1494  return (_Cont.empty());
1495  }
template<class _Ty , size_t _Size>
constexpr bool empty ( const   _Ty(&)[_Size])
inline
1500  { // get dimension==0 for array (can't happen)
1501  return (false);
1502  }
template<class _Elem >
constexpr bool empty ( initializer_list< _Elem >  _Ilist)
inline
1507  { // get dimension==0 for initializer_list
1508  return (_Ilist.size() == 0);
1509  }
constexpr size_t size() const _NOEXCEPT
Definition: initializer_list:49
template<class _Container >
auto end ( _Container &  _Cont) -> decltype(_Cont.end())
inline
1366  { // get end of sequence
1367  return (_Cont.end());
1368  }
template<class _Container >
auto end ( const _Container &  _Cont) -> decltype(_Cont.end())
inline
1372  { // get end of sequence
1373  return (_Cont.end());
1374  }
template<class _Ty , size_t _Size>
constexpr _Ty* end ( _Ty(&)  _Array[_Size])
inline
1386  { // get end of array
1387  return (_Array + _Size);
1388  }
_CRT_BEGIN_C_HEADER _Check_return_ _Ret_maybenull_ _In_ size_t _Size
Definition: corecrt_malloc.h:58
template<class _InIt1 , class _InIt2 , class _Pr >
bool equal ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_Pr  _Pred 
)
inline
2888  { // compare [_First1, _Last1) to [_First2, ...) using _Pred
2889  _DEPRECATE_UNCHECKED(equal, _First2);
2890  return (_Equal_no_deprecate(_First1, _Last1, _First2, _Pred));
2891  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
bool equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
Definition: xutility:2886
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
bool _Equal_no_deprecate(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred)
Definition: xutility:2873
template<class _InIt1 , class _InIt2 >
bool equal ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2 
)
inline
2912  { // compare [_First1, _Last1) to [_First2, ...)
2913  return (_STD equal(_First1, _Last1, _First2,
2914  equal_to<>()));
2915  }
bool equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
Definition: xutility:2886
Definition: xstddef:212
template<class _InIt1 , class _InIt2 , class _Pr >
bool equal ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr  _Pred 
)
inline
2962  { // compare [_First1, _Last1) to [_First2, _Last2) using _Pred
2963  _DEBUG_RANGE(_First1, _Last1);
2964  _DEBUG_RANGE(_First2, _Last2);
2965  return (_Equal_unchecked(_Unchecked(_First1), _Unchecked(_Last1),
2966  _Unchecked(_First2), _Unchecked(_Last2), _Pred,
2968  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
bool _Equal_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr &_Pred)
Definition: xutility:2863
template<class _InIt1 , class _InIt2 >
bool equal ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2 
)
inline
2975  { // compare [_First1, _Last1) to [_First2, _Last2)
2976  return (_STD equal(_First1, _Last1, _First2, _Last2,
2977  equal_to<>()));
2978  }
bool equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
Definition: xutility:2886
Definition: xstddef:212
template<class _FwdIt , class _Ty >
void fill ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
2710  { // copy _Val through [_First, _Last)
2711  _DEBUG_RANGE(_First, _Last);
2713  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
void _Fill_unchecked(_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
Definition: xutility:2702
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _OutIt , class _Diff , class _Ty >
_OutIt fill_n ( _OutIt  _Dest,
_Diff  _Count,
const _Ty &  _Val 
)
inline
2753  { // copy _Val _Count times through [_Dest, ...)
2754  return (_Rechecked(_Dest,
2756  }
_OutIt _Fill_n_unchecked(_OutIt _Dest, _Diff _Count, const _Ty &_Val)
Definition: xutility:2743
unsigned _Dest
Definition: mbstring.h:107
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
auto _Unchecked_n(_Iter _Src, _Diff)
Definition: xutility:710
_Diff _Count
Definition: algorithm:1941
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _InIt , class _Ty >
_InIt find ( _InIt  _First,
_InIt  _Last,
const _Ty &  _Val 
)
inline
3186  { // find first matching _Val
3187  _DEBUG_RANGE(_First, _Last);
3188  return (_Rechecked(_First,
3190  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
_InIt _Find_unchecked(_InIt _First, _InIt _Last, const _Ty &_Val)
Definition: xutility:3168
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool is_permutation ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_Pr  _Pred 
)
inline
3325  { // test if [_First1, _Last1) == permuted [_First2, ...), using _Pred
3327  return (_Is_permutation_no_deprecate(_First1, _Last1, _First2, _Pred));
3328  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
bool _Is_permutation_no_deprecate(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr &_Pred)
Definition: xutility:3310
bool is_permutation(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr _Pred)
Definition: xutility:3323
template<class _FwdIt1 , class _FwdIt2 >
bool is_permutation ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2 
)
inline
3349  { // test if [_First1, _Last1) == permuted [_First2, ...)
3350  return (_STD is_permutation(_First1, _Last1,
3351  _First2, equal_to<>()));
3352  }
bool is_permutation(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr _Pred)
Definition: xutility:3323
Definition: xstddef:212
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
bool is_permutation ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr  _Pred 
)
inline
3407  { // test if [_First1, _Last1) == permuted [_First2, _Last2),
3408  // using _Pred
3409  _DEBUG_RANGE(_First1, _Last1);
3410  _DEBUG_RANGE(_First2, _Last2);
3411  return (_Is_permutation_unchecked(_Unchecked(_First1), _Unchecked(_Last1),
3412  _Unchecked(_First2), _Unchecked(_Last2), _Pred,
3414  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
bool _Is_permutation_unchecked(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr &_Pred)
Definition: xutility:3292
template<class _FwdIt1 , class _FwdIt2 >
bool is_permutation ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2 
)
inline
3421  { // test if [_First1, _Last1) == permuted [_First2, _Last2)
3422  return (_STD is_permutation(_First1, _Last1,
3423  _First2, _Last2, equal_to<>()));
3424  }
bool is_permutation(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _Pr _Pred)
Definition: xutility:3323
Definition: xstddef:212
template<class _InIt1 , class _InIt2 , class _Pr >
bool lexicographical_compare ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr  _Pred 
)
inline
3082  { // order [_First1, _Last1) vs. [_First2, _Last2) using _Pred
3083  _DEBUG_RANGE(_First1, _Last1);
3084  _DEBUG_RANGE(_First2, _Last2);
3085  return (_Lex_compare_unchecked(_Unchecked(_First1), _Unchecked(_Last1),
3086  _Unchecked(_First2), _Unchecked(_Last2), _Pred));
3087  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
bool _Lex_compare_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr &_Pred)
Definition: xutility:3070
template<class _InIt1 , class _InIt2 >
bool lexicographical_compare ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2 
)
inline
3094  { // order [_First1, _Last1) vs. [_First2, _Last2)
3095  return (_STD lexicographical_compare(_First1, _Last1,
3096  _First2, _Last2, less<>()));
3097  }
bool lexicographical_compare(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
Definition: xutility:3080
Definition: xstddef:226
template<class _RanIt >
move_iterator<_RanIt> make_move_iterator ( _RanIt  _Iter)
inline
2262  { // make move_iterator from iterator
2263  return (move_iterator<_RanIt>(_Iter));
2264  }
Definition: xutility:2049
template<class _RanIt >
_CONSTEXPR17_11 reverse_iterator<_RanIt> make_reverse_iterator ( _RanIt  _Iter)
1346  { // make reverse_iterator from iterator
1347  return (reverse_iterator<_RanIt>(_Iter));
1348  }
Definition: xutility:1155
template<class _InIt , class _OutIt >
_OutIt move ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
2574  { // move [_First, _Last) to [_Dest, ...)
2576  return (_Move_no_deprecate(_First, _Last, _Dest));
2577  }
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
unsigned _Dest
Definition: mbstring.h:107
_OutIt move(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2572
_OutIt _Move_no_deprecate(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2558
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt1 , class _BidIt2 >
_BidIt2 move_backward ( _BidIt1  _First,
_BidIt1  _Last,
_BidIt2  _Dest 
)
inline
2625  { // move [_First, _Last) backwards to [..., _Dest)
2627  _DEBUG_RANGE(_First, _Last);
2628  const auto _UFirst = _Unchecked(_First);
2629  const auto _ULast = _Unchecked(_Last);
2630  const auto _UDest = _Unchecked_n_backward(_Dest, _Idl_distance(_UFirst, _ULast));
2631  return (_Rechecked(_Dest,
2632  _Move_backward_unchecked(_UFirst, _ULast, _UDest)));
2633  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEPRECATE_UNCHECKED(_Func, _Iter)
Definition: xutility:501
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
unsigned _Dest
Definition: mbstring.h:107
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
_BidIt2 move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: xutility:2623
_BidIt2 _Move_backward_unchecked(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: xutility:2613
_Distance_unknown _Idl_distance(const _Iter &, const _Iter &)
Definition: xutility:681
auto _Unchecked_n_backward(_Iter _Src, _Diff)
Definition: xutility:754
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt >
_InIt next ( _InIt  _First,
_Iter_diff_t< _InIt >  _Off = 1 
)
inline
1119  { // increment iterator
1120  static_assert(is_base_of<input_iterator_tag, _Iter_cat_t<_InIt>>::value,
1121  "next requires input iterator");
1122 
1123  _STD advance(_First, _Off);
1124  return (_First);
1125  }
Definition: type_traits:1053
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
Definition: xutility:508
void advance(_InIt &_Where, _Diff _Off)
Definition: xutility:1084
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator!= ( const reverse_iterator< _RanIt1 > &  _Left,
const reverse_iterator< _RanIt2 > &  _Right 
)
1307  { // test for reverse_iterator inequality
1308  return (!(_Left == _Right));
1309  }
template<class _RanIt1 , class _RanIt2 >
bool operator!= ( const move_iterator< _RanIt1 > &  _Left,
const move_iterator< _RanIt2 > &  _Right 
)
inline
2219  { // test for move_iterator inequality
2220  return (!(_Left == _Right));
2221  }
template<class _RanIt >
_CONSTEXPR17_11 reverse_iterator<_RanIt> operator+ ( typename reverse_iterator< _RanIt >::difference_type  _Off,
const reverse_iterator< _RanIt > &  _Right 
)
1282  { // return reverse_iterator + integer
1283  return (_Right + _Off);
1284  }
template<class _Ty , size_t _Size>
_Array_const_iterator<_Ty, _Size> operator+ ( typename _Array_const_iterator< _Ty, _Size >::difference_type  _Off,
_Array_const_iterator< _Ty, _Size _Next 
)
inline
1907  { // add offset to iterator
1908  return (_Next += _Off);
1909  }
template<class _Ty , size_t _Size>
_Array_iterator<_Ty, _Size> operator+ ( typename _Array_iterator< _Ty, _Size >::difference_type  _Off,
_Array_iterator< _Ty, _Size _Next 
)
inline
2043  { // add offset to iterator
2044  return (_Next += _Off);
2045  }
template<class _RanIt , class _Diff >
move_iterator<_RanIt> operator+ ( _Diff  _Off,
const move_iterator< _RanIt > &  _Right 
)
inline
2191  { // return move_iterator + integer
2192  return (_Right + _Off);
2193  }
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 auto operator- ( const reverse_iterator< _RanIt1 > &  _Left,
const reverse_iterator< _RanIt2 > &  _Right 
) -> decltype(_Right.base() - _Left.base())
1291  { // return difference of reverse_iterators
1292  return (_Right.base() - _Left.base());
1293  }
_CONSTEXPR17_11 _RanIt base() const
Definition: xutility:1194
template<class _RanIt1 , class _RanIt2 >
auto operator- ( const move_iterator< _RanIt1 > &  _Left,
const move_iterator< _RanIt2 > &  _Right 
) -> decltype(_Left.base() - _Right.base())
inline
2201  { // test for move_iterator equality
2202  return (_Left.base() - _Right.base());
2203  }
_RanIt base() const
Definition: xutility:2088
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator< ( const reverse_iterator< _RanIt1 > &  _Left,
const reverse_iterator< _RanIt2 > &  _Right 
)
1315  { // test for reverse_iterator < reverse_iterator
1316  return (_Right.base() < _Left.base());
1317  }
_CONSTEXPR17_11 _RanIt base() const
Definition: xutility:1194
template<class _RanIt1 , class _RanIt2 >
bool operator< ( const move_iterator< _RanIt1 > &  _Left,
const move_iterator< _RanIt2 > &  _Right 
)
inline
2228  { // test for move_iterator < move_iterator
2229  return (_Left._Less(_Right));
2230  }
bool _Less(const move_iterator< _RanIt2 > &_Right) const
Definition: xutility:2165
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator<= ( const reverse_iterator< _RanIt1 > &  _Left,
const reverse_iterator< _RanIt2 > &  _Right 
)
1331  { // test for reverse_iterator <= reverse_iterator
1332  return (!(_Right < _Left));
1333  }
template<class _RanIt1 , class _RanIt2 >
bool operator<= ( const move_iterator< _RanIt1 > &  _Left,
const move_iterator< _RanIt2 > &  _Right 
)
inline
2246  { // test for move_iterator <= move_iterator
2247  return (!(_Right < _Left));
2248  }
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator== ( const reverse_iterator< _RanIt1 > &  _Left,
const reverse_iterator< _RanIt2 > &  _Right 
)
1299  { // test for reverse_iterator equality
1300  return (_Left.base() == _Right.base());
1301  }
_CONSTEXPR17_11 _RanIt base() const
Definition: xutility:1194
template<class _RanIt1 , class _RanIt2 >
bool operator== ( const move_iterator< _RanIt1 > &  _Left,
const move_iterator< _RanIt2 > &  _Right 
)
inline
2210  { // test for move_iterator equality
2211  return (_Left._Equal(_Right));
2212  }
bool _Equal(const move_iterator< _RanIt2 > &_Right) const
Definition: xutility:2130
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator> ( const reverse_iterator< _RanIt1 > &  _Left,
const reverse_iterator< _RanIt2 > &  _Right 
)
1323  { // test for reverse_iterator > reverse_iterator
1324  return (_Right < _Left);
1325  }
template<class _RanIt1 , class _RanIt2 >
bool operator> ( const move_iterator< _RanIt1 > &  _Left,
const move_iterator< _RanIt2 > &  _Right 
)
inline
2237  { // test for move_iterator > move_iterator
2238  return (_Right < _Left);
2239  }
template<class _RanIt1 , class _RanIt2 >
_CONSTEXPR17_11 bool operator>= ( const reverse_iterator< _RanIt1 > &  _Left,
const reverse_iterator< _RanIt2 > &  _Right 
)
1339  { // test for reverse_iterator >= reverse_iterator
1340  return (!(_Left < _Right));
1341  }
template<class _RanIt1 , class _RanIt2 >
bool operator>= ( const move_iterator< _RanIt1 > &  _Left,
const move_iterator< _RanIt2 > &  _Right 
)
inline
2255  { // test for move_iterator >= move_iterator
2256  return (!(_Left < _Right));
2257  }
template<class _BidIt >
_BidIt prev ( _BidIt  _First,
_Iter_diff_t< _BidIt >  _Off = 1 
)
inline
1130  { // decrement iterator
1132  "prev requires bidirectional iterator");
1133 
1134  _STD advance(_First, -_Off);
1135  return (_First);
1136  }
Definition: type_traits:1053
typename iterator_traits< _Iter >::iterator_category _Iter_cat_t
Definition: xutility:657
void advance(_InIt &_Where, _Diff _Off)
Definition: xutility:1084
Definition: xutility:526
template<class _Container >
auto rbegin ( _Container &  _Cont) -> decltype(_Cont.rbegin())
inline
1410  { // get beginning of reversed sequence
1411  return (_Cont.rbegin());
1412  }
template<class _Container >
auto rbegin ( const _Container &  _Cont) -> decltype(_Cont.rbegin())
inline
1416  { // get beginning of reversed sequence
1417  return (_Cont.rbegin());
1418  }
template<class _Ty , size_t _Size>
reverse_iterator<_Ty *> rbegin ( _Ty(&)  _Array[_Size])
inline
1435  { // get beginning of reversed array
1436  return (reverse_iterator<_Ty *>(_Array + _Size));
1437  }
Definition: xutility:1155
_CRT_BEGIN_C_HEADER _Check_return_ _Ret_maybenull_ _In_ size_t _Size
Definition: corecrt_malloc.h:58
template<class _Elem >
reverse_iterator<const _Elem *> rbegin ( initializer_list< _Elem >  _Ilist)
inline
1449  { // get beginning of reversed sequence
1450  return (reverse_iterator<const _Elem *>(_Ilist.end()));
1451  }
constexpr const _Elem * end() const _NOEXCEPT
Definition: initializer_list:44
Definition: xutility:1155
template<class _Container >
auto rend ( _Container &  _Cont) -> decltype(_Cont.rend())
inline
1422  { // get end of reversed sequence
1423  return (_Cont.rend());
1424  }
template<class _Container >
auto rend ( const _Container &  _Cont) -> decltype(_Cont.rend())
inline
1428  { // get end of reversed sequence
1429  return (_Cont.rend());
1430  }
template<class _Ty , size_t _Size>
reverse_iterator<_Ty *> rend ( _Ty(&)  _Array[_Size])
inline
1442  { // get end of reversed array
1443  return (reverse_iterator<_Ty *>(_Array));
1444  }
Definition: xutility:1155
template<class _Elem >
reverse_iterator<const _Elem *> rend ( initializer_list< _Elem >  _Ilist)
inline
1456  { // get end of reversed sequence
1457  return (reverse_iterator<const _Elem *>(_Ilist.begin()));
1458  }
Definition: xutility:1155
constexpr const _Elem * begin() const _NOEXCEPT
Definition: initializer_list:39
template<class _BidIt >
void reverse ( _BidIt  _First,
_BidIt  _Last 
)
inline
3436  { // reverse elements in [_First, _Last)
3437  _DEBUG_RANGE(_First, _Last);
3439  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
void _Reverse_unchecked(_BidIt _First, _BidIt _Last)
Definition: xutility:3428
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt >
_FwdIt rotate ( _FwdIt  _First,
_FwdIt  _Mid,
_FwdIt  _Last 
)
inline
3507  { // rotate [_First, _Last)
3508  _DEBUG_RANGE(_First, _Mid);
3509  _DEBUG_RANGE(_Mid, _Last);
3510  return (_Rechecked(_First,
3511  _Rotate_unchecked(_Unchecked(_First), _Unchecked(_Mid),
3512  _Unchecked(_Last))));
3513  }
constexpr _Iter _Unchecked(_Iter _Src)
Definition: xutility:449
_FwdIt _Rotate_unchecked(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
Definition: xutility:3496
#define _DEBUG_RANGE(first, last)
Definition: xutility:902
_CONSTEXPR14 _Iter & _Rechecked(_Iter &_Dest, _UIter _Src)
Definition: xutility:479
_FwdIt _Last
Definition: algorithm:1936
template<class _Container >
constexpr auto size ( const _Container &  _Cont) -> decltype(_Cont.size())
inline
1479  { // get size() for container
1480  return (_Cont.size());
1481  }
template<class _Ty , size_t _Size>
constexpr size_t size ( const   _Ty(&)[_Size])
inline
1486  { // get dimension for array
1487  return (_Size);
1488  }
_CRT_BEGIN_C_HEADER _Check_return_ _Ret_maybenull_ _In_ size_t _Size
Definition: corecrt_malloc.h:58

Variable Documentation

template<class _Iter >
_Is_checked_helper<_Iter>::type _Is_checked(_Iter)
inline
443  { // return type is true_type if iterator is checked
444  return {};
445  }
constexpr allocator_arg_t allocator_arg {}