Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Standard library header <algorithm>

      From cppreference.com
      <cpp‎ |header
       
       
      Standard library headers
       

      This header is part of thealgorithm library.

      Contents

      Includes

      std::initializer_list class template[edit]

      Classes

      Defined in namespacestd::ranges
      Return types(C++20)
      provides a way to store an iterator and a function object as a single unit
      (class template)[edit]
      provides a way to store two iterators as a single unit
      (class template)[edit]
      provides a way to store two iterators as a single unit
      (class template)[edit]
      provides a way to store three iterators as a single unit
      (class template)[edit]
      provides a way to store three iterators as a single unit
      (class template)[edit]
      provides a way to store two objects or references of the same type as a single unit
      (class template)[edit]
      provides a way to store an iterator and a boolean flag as a single unit
      (class template)[edit]
      provides a way to store an iterator and a value as a single unit
      (class template)[edit]
      provides a way to store an iterator and a value as a single unit
      (class template)[edit]

      Functions

      Non-modifying sequence operations
      (C++11)(C++11)(C++11)
      checks if a predicate istrue for all, any or none of the elements in a range
      (function template)[edit]
      applies a unaryfunction object to elements from arange
      (function template)[edit]
      (C++17)
      applies a function object to the first N elements of a sequence
      (function template)[edit]
      returns the number of elements satisfying specific criteria
      (function template)[edit]
      finds the first position where two ranges differ
      (function template)[edit]
      finds the first element satisfying specific criteria
      (function template)[edit]
      finds the last sequence of elements in a certain range
      (function template)[edit]
      searches for any one of a set of elements
      (function template)[edit]
      finds the first two adjacent items that are equal (or satisfy a given predicate)
      (function template)[edit]
      searches for the first occurrence of a range of elements
      (function template)[edit]
      searches for the first occurrence of a number consecutive copies of an element in a range
      (function template)[edit]
      Modifying sequence operations
      copies a range of elements to a new location
      (function template)[edit]
      (C++11)
      copies a number of elements to a new location
      (function template)[edit]
      copies a range of elements in backwards order
      (function template)[edit]
      (C++11)
      moves a range of elements to a new location
      (function template)[edit]
      moves a range of elements to a new location in backwards order
      (function template)[edit]
      copy-assigns the given value to every element in a range
      (function template)[edit]
      copy-assigns the given value to N elements in a range
      (function template)[edit]
      applies a function to a range of elements, storing results in a destination range
      (function template)[edit]
      assigns the results of successive function calls to every element in a range
      (function template)[edit]
      assigns the results of successive function calls to N elements in a range
      (function template)[edit]
      removes elements satisfying specific criteria
      (function template)[edit]
      copies a range of elements omitting those that satisfy specific criteria
      (function template)[edit]
      replaces all values satisfying specific criteria with another value
      (function template)[edit]
      copies a range, replacing elements satisfying specific criteria with another value
      (function template)[edit]
      swaps the values of two objects
      (function template)[edit]
      swaps two ranges of elements
      (function template)[edit]
      swaps the elements pointed to by two iterators
      (function template)[edit]
      reverses the order of elements in a range
      (function template)[edit]
      creates a copy of a range that is reversed
      (function template)[edit]
      rotates the order of elements in a range
      (function template)[edit]
      copies and rotate a range of elements
      (function template)[edit]
      shifts elements in a range
      (function template)[edit]
      (until C++17)(C++11)
      randomly re-orders elements in a range
      (function template)[edit]
      (C++17)
      selects N random elements from a sequence
      (function template)[edit]
      removes consecutive duplicate elements in a range
      (function template)[edit]
      creates a copy of some range of elements that contains no consecutive duplicates
      (function template)[edit]
      Partitioning operations
      determines if the range is partitioned by the given predicate
      (function template)[edit]
      divides a range of elements into two groups
      (function template)[edit]
      copies a range dividing the elements into two groups
      (function template)[edit]
      divides elements into two groups while preserving their relative order
      (function template)[edit]
      locates the partition point of a partitioned range
      (function template)[edit]
      Sorting operations
      (C++11)
      checks whether a range is sorted into ascending order
      (function template)[edit]
      finds the largest sorted subrange
      (function template)[edit]
      sorts a range into ascending order
      (function template)[edit]
      sorts the first N elements of a range
      (function template)[edit]
      copies and partially sorts a range of elements
      (function template)[edit]
      sorts a range of elements while preserving order between equal elements
      (function template)[edit]
      partially sorts the given range making sure that it is partitioned by the given element
      (function template)[edit]
      Binary search operations (on sorted ranges)
      returns an iterator to the first elementnot less than the given value
      (function template)[edit]
      returns an iterator to the first elementgreater than a certain value
      (function template)[edit]
      determines if an element exists in a partially-ordered range
      (function template)[edit]
      returns range of elements matching a specific key
      (function template)[edit]
      Other operations on sorted ranges
      merges two sorted ranges
      (function template)[edit]
      merges two ordered ranges in-place
      (function template)[edit]
      Set operations (on sorted ranges)
      returnstrue if one sequence is a subsequence of another
      (function template)[edit]
      computes the difference between two sets
      (function template)[edit]
      computes the intersection of two sets
      (function template)[edit]
      computes the symmetric difference between two sets
      (function template)[edit]
      computes the union of two sets
      (function template)[edit]
      Heap operations
      (C++11)
      checks if the given range is a max heap
      (function template)[edit]
      finds the largest subrange that is a max heap
      (function template)[edit]
      creates a max heap out of a range of elements
      (function template)[edit]
      adds an element to a max heap
      (function template)[edit]
      removes the largest element from a max heap
      (function template)[edit]
      turns a max heap into a range of elements sorted in ascending order
      (function template)[edit]
      Minimum/maximum operations
      returns the greater of the given values
      (function template)[edit]
      returns the largest element in a range
      (function template)[edit]
      returns the smaller of the given values
      (function template)[edit]
      returns the smallest element in a range
      (function template)[edit]
      (C++11)
      returns the smaller and larger of two elements
      (function template)[edit]
      returns the smallest and the largest elements in a range
      (function template)[edit]
      (C++17)
      clamps a value between a pair of boundary values
      (function template)[edit]
      Comparison operations
      determines if two sets of elements are the same
      (function template)[edit]
      returnstrue if one range is lexicographically less than another
      (function template)[edit]
      compares two ranges using three-way comparison
      (function template)[edit]
      Permutation operations
      determines if a sequence is a permutation of another sequence
      (function template)[edit]
      generates the next greater lexicographic permutation of a range of elements
      (function template)[edit]
      generates the next smaller lexicographic permutation of a range of elements
      (function template)[edit]

      Function-like entities(C++20)

      Defined in namespacestd::ranges
      Non-modifying sequence operations
      checks if a predicate istrue for all, any or none of the elements in a range
      (algorithm function object)[edit]
      applies a unaryfunction object to elements from arange
      (algorithm function object)[edit]
      applies a function object to the first N elements of a sequence
      (algorithm function object)[edit]
      returns the number of elements satisfying specific criteria
      (algorithm function object)[edit]
      finds the first position where two ranges differ
      (algorithm function object)[edit]
      finds the first element satisfying specific criteria
      (algorithm function object)[edit]
      finds the last element satisfying specific criteria
      (algorithm function object)[edit]
      finds the last sequence of elements in a certain range
      (algorithm function object)[edit]
      searches for any one of a set of elements
      (algorithm function object)[edit]
      finds the first two adjacent items that are equal (or satisfy a given predicate)
      (algorithm function object)[edit]
      searches for the first occurrence of a range of elements
      (algorithm function object)[edit]
      searches for the first occurrence of a number consecutive copies of an element in a range
      (algorithm function object)[edit]
      checks if the range contains the given element or subrange
      (algorithm function object)[edit]
      checks whether a range starts with another range
      (algorithm function object)[edit]
      checks whether a range ends with another range
      (algorithm function object)[edit]
      Fold operations
      left-folds a range of elements
      (algorithm function object)[edit]
      left-folds a range of elements using the first element as an initial value
      (algorithm function object)[edit]
      right-folds a range of elements
      (algorithm function object)[edit]
      right-folds a range of elements using the last element as an initial value
      (algorithm function object)[edit]
      left-folds a range of elements, and returns apair (iterator, value)
      (algorithm function object)[edit]
      left-folds a range of elements using the first element as an initial value, and returns apair (iterator,optional)
      (algorithm function object)[edit]
      Modifying sequence operations
      copies a range of elements to a new location
      (algorithm function object)[edit]
      copies a number of elements to a new location
      (algorithm function object)[edit]
      copies a range of elements in backwards order
      (algorithm function object)[edit]
      moves a range of elements to a new location
      (algorithm function object)[edit]
      moves a range of elements to a new location in backwards order
      (algorithm function object)[edit]
      assigns a range of elements a certain value
      (algorithm function object)[edit]
      assigns a value to a number of elements
      (algorithm function object)[edit]
      applies a function to a range of elements
      (algorithm function object)[edit]
      saves the result of a function in a range
      (algorithm function object)[edit]
      saves the result of N applications of a function
      (algorithm function object)[edit]
      removes elements satisfying specific criteria
      (algorithm function object)[edit]
      copies a range of elements omitting those that satisfy specific criteria
      (algorithm function object)[edit]
      replaces all values satisfying specific criteria with another value
      (algorithm function object)[edit]
      copies a range, replacing elements satisfying specific criteria with another value
      (algorithm function object)[edit]
      swaps two ranges of elements
      (algorithm function object)[edit]
      reverses the order of elements in a range
      (algorithm function object)[edit]
      creates a copy of a range that is reversed
      (algorithm function object)[edit]
      rotates the order of elements in a range
      (algorithm function object)[edit]
      copies and rotate a range of elements
      (algorithm function object)[edit]
      shifts elements in a range
      (algorithm function object)[edit]
      selects N random elements from a sequence
      (algorithm function object)[edit]
      randomly re-orders elements in a range
      (algorithm function object)[edit]
      removes consecutive duplicate elements in a range
      (algorithm function object)[edit]
      creates a copy of some range of elements that contains no consecutive duplicates
      (algorithm function object)[edit]
      Partitioning operations
      determines if the range is partitioned by the given predicate
      (algorithm function object)[edit]
      divides a range of elements into two groups
      (algorithm function object)[edit]
      copies a range dividing the elements into two groups
      (algorithm function object)[edit]
      divides elements into two groups while preserving their relative order
      (algorithm function object)[edit]
      locates the partition point of a partitioned range
      (algorithm function object)[edit]
      Sorting operations
      checks whether a range is sorted into ascending order
      (algorithm function object)[edit]
      finds the largest sorted subrange
      (algorithm function object)[edit]
      sorts a range into ascending order
      (algorithm function object)[edit]
      sorts the first N elements of a range
      (algorithm function object)[edit]
      copies and partially sorts a range of elements
      (algorithm function object)[edit]
      sorts a range of elements while preserving order between equal elements
      (algorithm function object)[edit]
      partially sorts the given range making sure that it is partitioned by the given element
      (algorithm function object)[edit]
      Binary search operations (on sorted ranges)
      returns an iterator to the first elementnot less than the given value
      (algorithm function object)[edit]
      returns an iterator to the first elementgreater than a certain value
      (algorithm function object)[edit]
      determines if an element exists in a partially-ordered range
      (algorithm function object)[edit]
      returns range of elements matching a specific key
      (algorithm function object)[edit]
      Other operations on sorted ranges
      merges two sorted ranges
      (algorithm function object)[edit]
      merges two ordered ranges in-place
      (algorithm function object)[edit]
      Set operations (on sorted ranges)
      returnstrue if one sequence is a subsequence of another
      (algorithm function object)[edit]
      computes the difference between two sets
      (algorithm function object)[edit]
      computes the intersection of two sets
      (algorithm function object)[edit]
      computes the symmetric difference between two sets
      (algorithm function object)[edit]
      computes the union of two sets
      (algorithm function object)[edit]
      Heap operations
      checks if the given range is a max heap
      (algorithm function object)[edit]
      finds the largest subrange that is a max heap
      (algorithm function object)[edit]
      creates a max heap out of a range of elements
      (algorithm function object)[edit]
      adds an element to a max heap
      (algorithm function object)[edit]
      removes the largest element from a max heap
      (algorithm function object)[edit]
      turns a max heap into a range of elements sorted in ascending order
      (algorithm function object)[edit]
      Minimum/maximum operations
      returns the greater of the given values
      (algorithm function object)[edit]
      returns the largest element in a range
      (algorithm function object)[edit]
      returns the smaller of the given values
      (algorithm function object)[edit]
      returns the smallest element in a range
      (algorithm function object)[edit]
      returns the smaller and larger of two elements
      (algorithm function object)[edit]
      returns the smallest and the largest elements in a range
      (algorithm function object)[edit]
      clamps a value between a pair of boundary values
      (algorithm function object)[edit]
      Comparison operations
      determines if two sets of elements are the same
      (algorithm function object)[edit]
      returnstrue if one range is lexicographically less than another
      (algorithm function object)[edit]
      Permutation operations
      determines if a sequence is a permutation of another sequence
      (algorithm function object)[edit]
      generates the next greater lexicographic permutation of a range of elements
      (algorithm function object)[edit]
      generates the next smaller lexicographic permutation of a range of elements
      (algorithm function object)[edit]

      [edit]Synopsis

      // mostly freestanding#include <initializer_list> namespace std{namespace ranges{// algorithm result typestemplate<class I,class F>struct in_fun_result; template<class I1,class I2>struct in_in_result; template<class I,class O>struct in_out_result; template<class I1,class I2,class O>struct in_in_out_result; template<class I,class O1,class O2>struct in_out_out_result; template<class T>struct min_max_result; template<class I>struct in_found_result; template<class I,class T>struct in_value_result; template<class O,class T>struct out_value_result;} // non-modifying sequence operations// all oftemplate<class InputIter,class Pred>constexprbool all_of(InputIter first, InputIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>bool all_of(ExecutionPolicy&& exec,// freestanding-deleted                ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexprbool all_of(I first, S last, Pred pred, Proj proj={});template<input_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexprbool all_of(R&& r, Pred pred, Proj proj={});} // any oftemplate<class InputIter,class Pred>constexprbool any_of(InputIter first, InputIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>bool any_of(ExecutionPolicy&& exec,// freestanding-deleted                ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexprbool any_of(I first, S last, Pred pred, Proj proj={});template<input_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexprbool any_of(R&& r, Pred pred, Proj proj={});} // none oftemplate<class InputIter,class Pred>constexprbool none_of(InputIter first, InputIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>bool none_of(ExecutionPolicy&& exec,// freestanding-deleted                 ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexprbool none_of(I first, S last, Pred pred, Proj proj={});template<input_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexprbool none_of(R&& r, Pred pred, Proj proj={});} // containsnamespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>>      requires indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T*>constexprbool contains(I first, S last,const T& value, Proj proj={});template<input_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>>      requires indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T*>constexprbool contains(R&& r,const T& value, Proj proj={}); template<forward_iterator I1, sentinel_for<I1> S1,             forward_iterator I2, sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexprbool contains_subrange(I1 first1, S1 last1, I2 first2, S2 last2,                                       Pred pred={}, Proj1 proj1={},                                       Proj2 proj2={});template<forward_range R1, forward_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexprbool contains_subrange(R1&& r1, R2&& r2,                                       Pred pred={}, Proj1 proj1={},                                       Proj2 proj2={});} // for eachtemplate<class InputIter,class Function>constexpr Function for_each(InputIter first, InputIter last, Function f);template<class ExecutionPolicy,class ForwardIter,class Function>void for_each(ExecutionPolicy&& exec,// freestanding-deleted                  ForwardIter first, ForwardIter last, Function f); namespace ranges{template<class I,class F>using for_each_result= in_fun_result<I, F>; template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirectly_unary_invocable<projected<I, Proj>> Fun>constexpr for_each_result<I, Fun>        for_each(I first, S last, Fun f, Proj proj={});template<input_range R,class Proj= identity,             indirectly_unary_invocable<projected<iterator_t<R>, Proj>> Fun>constexpr for_each_result<borrowed_iterator_t<R>, Fun>        for_each(R&& r, Fun f, Proj proj={});} template<class InputIter,class Size,class Function>constexpr InputIter for_each_n(InputIter first, Size n, Function f);template<class ExecutionPolicy,class ForwardIter,class Size,class Function>    ForwardIter for_each_n(ExecutionPolicy&& exec,// freestanding-deleted                           ForwardIter first, Size n, Function f); namespace ranges{template<class I,class F>using for_each_n_result= in_fun_result<I, F>; template<input_iterator I,class Proj= identity,             indirectly_unary_invocable<projected<I, Proj>> Fun>constexpr for_each_n_result<I, Fun>        for_each_n(I first, iter_difference_t<I> n, Fun f, Proj proj={});} // findtemplate<class InputIter,class T=typename iterator_traits<InputIter>::value_type>constexpr InputIter find(InputIter first, InputIter last,const T& value);template<class ExecutionPolicy,class ForwardIter,class T=typename iterator_traits<InputIter>::value_type>    ForwardIter find(ExecutionPolicy&& exec,// freestanding-deleted                     ForwardIter first, ForwardIter last,const T& value);template<class InputIter,class Pred>constexpr InputIter find_if(InputIter first, InputIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>    ForwardIter find_if(ExecutionPolicy&& exec,// freestanding-deleted                        ForwardIter first, ForwardIter last, Pred pred);template<class InputIter,class Pred>constexpr InputIter find_if_not(InputIter first, InputIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>    ForwardIter find_if_not(ExecutionPolicy&& exec,// freestanding-deleted                            ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identityclass T= projected_value_t<I, Proj>>      requires indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T*>constexpr I find(I first, S last,const T& value, Proj proj={});template<input_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>>      requires indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T*>constexpr borrowed_iterator_t<R>        find(R&& r,const T& value, Proj proj={});template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr I find_if(I first, S last, Pred pred, Proj proj={});template<input_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexpr borrowed_iterator_t<R>        find_if(R&& r, Pred pred, Proj proj={});template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr I find_if_not(I first, S last, Pred pred, Proj proj={});template<input_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexpr borrowed_iterator_t<R>        find_if_not(R&& r, Pred pred, Proj proj={});} // find lastnamespace ranges{template<forward_iterator I, sentinel_for<I> S,class T,class Proj= identity>      requires indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T*>constexpr subrange<I> find_last(I first, S last,const T& value, Proj proj={});template<forward_range R,class T,class Proj= identity>      requires        indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T*>constexpr borrowed_subrange_t<R> find_last(R&& r,const T& value, Proj proj={});template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr subrange<I> find_last_if(I first, S last, Pred pred, Proj proj={});template<forward_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexpr borrowed_subrange_t<R> find_last_if(R&& r, Pred pred, Proj proj={});template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr subrange<I> find_last_if_not(I first, S last, Pred pred, Proj proj={});template<forward_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexpr borrowed_subrange_t<R> find_last_if_not(R&& r, Pred pred, Proj proj={});} // find endtemplate<class ForwardIter1,class ForwardIter2>constexpr ForwardIter1      find_end(ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2);template<class ForwardIter1,class ForwardIter2,class BinaryPred>constexpr ForwardIter1      find_end(ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2,               BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter1      find_end(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>    ForwardIter1      find_end(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2,               BinaryPred pred); namespace ranges{template<forward_iterator I1, sentinel_for<I1> S1, forward_iterator I2,             sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexpr subrange<I1>        find_end(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred={},                 Proj1 proj1={}, Proj2 proj2={});template<forward_range R1, forward_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexpr borrowed_subrange_t<R1>        find_end(R1&& r1, R2&& r2, Pred pred={},                 Proj1 proj1={}, Proj2 proj2={});} // find firsttemplate<class InputIter,class ForwardIter>constexpr InputIter      find_first_of(InputIter first1, InputIter last1,                    ForwardIter first2, ForwardIter last2);template<class InputIter,class ForwardIter,class BinaryPred>constexpr InputIter      find_first_of(InputIter first1, InputIter last1,                    ForwardIter first2, ForwardIter last2,                    BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter1      find_first_of(ExecutionPolicy&& exec,// freestanding-deleted                    ForwardIter1 first1, ForwardIter1 last1,                    ForwardIter2 first2, ForwardIter2 last2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>    ForwardIter1      find_first_of(ExecutionPolicy&& exec,// freestanding-deleted                    ForwardIter1 first1, ForwardIter1 last1,                    ForwardIter2 first2, ForwardIter2 last2,                    BinaryPred pred); namespace ranges{template<input_iterator I1, sentinel_for<I1> S1, forward_iterator I2,             sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexpr I1 find_first_of(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred={},                                 Proj1 proj1={}, Proj2 proj2={});template<input_range R1, forward_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexpr borrowed_iterator_t<R1>        find_first_of(R1&& r1, R2&& r2, Pred pred={},                      Proj1 proj1={}, Proj2 proj2={});} // adjacent findtemplate<class ForwardIter>constexpr ForwardIter adjacent_find(ForwardIter first, ForwardIter last);template<class ForwardIter,class BinaryPred>constexpr ForwardIter adjacent_find(ForwardIter first, ForwardIter last,                                        BinaryPred pred);template<class ExecutionPolicy,class ForwardIter>    ForwardIter adjacent_find(ExecutionPolicy&& exec,// freestanding-deleted                              ForwardIter first, ForwardIter last);template<class ExecutionPolicy,class ForwardIter,class BinaryPred>    ForwardIter adjacent_find(ExecutionPolicy&& exec,// freestanding-deleted                              ForwardIter first, ForwardIter last, BinaryPred pred); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_binary_predicate<projected<I, Proj>,projected<I, Proj>> Pred=ranges::equal_to>constexpr I adjacent_find(I first, S last, Pred pred={}, Proj proj={});template<forward_range R,class Proj= identity,             indirect_binary_predicate<projected<iterator_t<R>, Proj>,projected<iterator_t<R>, Proj>>                                         Pred=ranges::equal_to>constexpr borrowed_iterator_t<R>        adjacent_find(R&& r, Pred pred={}, Proj proj={});} // counttemplate<class InputIter,class T=typename iterator_traits<InputIter>::value_type>constexprtypename iterator_traits<InputIter>::difference_type      count(InputIter first, InputIter last,const T& value);template<class ExecutionPolicy,class ForwardIter,class T=typename iterator_traits<InputIterator>::value_type>typename iterator_traits<ForwardIter>::difference_type      count(ExecutionPolicy&& exec,// freestanding-deleted            ForwardIter first, ForwardIter last,const T& value);template<class InputIter,class Pred>constexprtypename iterator_traits<InputIter>::difference_type      count_if(InputIter first, InputIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>typename iterator_traits<ForwardIter>::difference_type      count_if(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>>      requires indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T*>constexpr iter_difference_t<I>        count(I first, S last,const T& value, Proj proj={});template<input_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>>      requires indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T*>constexpr range_difference_t<R>        count(R&& r,const T& value, Proj proj={});template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr iter_difference_t<I>        count_if(I first, S last, Pred pred, Proj proj={});template<input_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexpr range_difference_t<R>        count_if(R&& r, Pred pred, Proj proj={});} // mismatchtemplate<class InputIter1,class InputIter2>constexpr pair<InputIter1, InputIter2>      mismatch(InputIter1 first1, InputIter1 last1,               InputIter2 first2);template<class InputIter1,class InputIter2,class BinaryPred>constexpr pair<InputIter1, InputIter2>      mismatch(InputIter1 first1, InputIter1 last1,               InputIter2 first2, BinaryPred pred);template<class InputIter1,class InputIter2>constexpr pair<InputIter1, InputIter2>      mismatch(InputIter1 first1, InputIter1 last1,               InputIter2 first2, InputIter2 last2);template<class InputIter1,class InputIter2,class BinaryPred>constexpr pair<InputIter1, InputIter2>      mismatch(InputIter1 first1, InputIter1 last1,               InputIter2 first2, InputIter2 last2,               BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    pair<ForwardIter1, ForwardIter2>      mismatch(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>    pair<ForwardIter1, ForwardIter2>      mismatch(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    pair<ForwardIter1, ForwardIter2>      mismatch(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>    pair<ForwardIter1, ForwardIter2>      mismatch(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2,               BinaryPred pred); namespace ranges{template<class I1,class I2>using mismatch_result= in_in_result<I1, I2>; template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexpr mismatch_result<I1, I2>        mismatch(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred={},                 Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexpr mismatch_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>        mismatch(R1&& r1, R2&& r2, Pred pred={},                 Proj1 proj1={}, Proj2 proj2={});} // equaltemplate<class InputIter1,class InputIter2>constexprbool equal(InputIter1 first1, InputIter1 last1,                         InputIter2 first2);template<class InputIter1,class InputIter2,class BinaryPred>constexprbool equal(InputIter1 first1, InputIter1 last1,                         InputIter2 first2, BinaryPred pred);template<class InputIter1,class InputIter2>constexprbool equal(InputIter1 first1, InputIter1 last1,                         InputIter2 first2, InputIter2 last2);template<class InputIter1,class InputIter2,class BinaryPred>constexprbool equal(InputIter1 first1, InputIter1 last1,                         InputIter2 first2, InputIter2 last2,                         BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>bool equal(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>bool equal(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>bool equal(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>bool equal(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter1 first1, ForwardIter1 last1,               ForwardIter2 first2, ForwardIter2 last2,               BinaryPred pred); namespace ranges{template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexprbool equal(I1 first1, S1 last1, I2 first2, S2 last2,                           Pred pred={},                           Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexprbool equal(R1&& r1, R2&& r2, Pred pred={},                           Proj1 proj1={}, Proj2 proj2={});} // is permutationtemplate<class ForwardIter1,class ForwardIter2>constexprbool is_permutation(ForwardIter1 first1, ForwardIter1 last1,                                  ForwardIter2 first2);template<class ForwardIter1,class ForwardIter2,class BinaryPred>constexprbool is_permutation(ForwardIter1 first1, ForwardIter1 last1,                                  ForwardIter2 first2, BinaryPred pred);template<class ForwardIter1,class ForwardIter2>constexprbool is_permutation(ForwardIter1 first1, ForwardIter1 last1,                                  ForwardIter2 first2, ForwardIter2 last2);template<class ForwardIter1,class ForwardIter2,class BinaryPred>constexprbool is_permutation(ForwardIter1 first1, ForwardIter1 last1,                                  ForwardIter2 first2, ForwardIter2 last2,                                  BinaryPred pred); namespace ranges{template<forward_iterator I1, sentinel_for<I1> S1, forward_iterator I2,             sentinel_for<I2> S2,class Proj1= identity,class Proj2= identity,             indirect_equivalence_relation<projected<I1, Proj1>,projected<I2, Proj2>> Pred=ranges::equal_to>constexprbool is_permutation(I1 first1, S1 last1, I2 first2, S2 last2,                                    Pred pred={},                                    Proj1 proj1={}, Proj2 proj2={});template<forward_range R1, forward_range R2,class Proj1= identity,class Proj2= identity,             indirect_equivalence_relation<projected<iterator_t<R1>, Proj1>,projected<iterator_t<R2>, Proj2>>                                           Pred=ranges::equal_to>constexprbool is_permutation(R1&& r1, R2&& r2, Pred pred={},                                    Proj1 proj1={}, Proj2 proj2={});} // searchtemplate<class ForwardIter1,class ForwardIter2>constexpr ForwardIter1      search(ForwardIter1 first1, ForwardIter1 last1,             ForwardIter2 first2, ForwardIter2 last2);template<class ForwardIter1,class ForwardIter2,class BinaryPred>constexpr ForwardIter1      search(ForwardIter1 first1, ForwardIter1 last1,             ForwardIter2 first2, ForwardIter2 last2, BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter1      search(ExecutionPolicy&& exec,// freestanding-deleted             ForwardIter1 first1, ForwardIter1 last1,             ForwardIter2 first2, ForwardIter2 last2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>    ForwardIter1      search(ExecutionPolicy&& exec,// freestanding-deleted             ForwardIter1 first1, ForwardIter1 last1,             ForwardIter2 first2, ForwardIter2 last2, BinaryPred pred); namespace ranges{template<forward_iterator I1, sentinel_for<I1> S1, forward_iterator I2,             sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexpr subrange<I1>        search(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred={},               Proj1 proj1={}, Proj2 proj2={});template<forward_range R1, forward_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexpr borrowed_subrange_t<R1>        search(R1&& r1, R2&& r2, Pred pred={},               Proj1 proj1={}, Proj2 proj2={});} template<class ForwardIter,class Size,class T=typename iterator_traits<ForwardIter>::value_type>constexpr ForwardIter      search_n(ForwardIter first, ForwardIter last,               Size count,const T& value);template<class ForwardIter,class Size,class T=typename iterator_traits<ForwardIter>::value_type,class BinaryPred>constexpr ForwardIter      search_n(ForwardIter first, ForwardIter last,               Size count,const T& value, BinaryPred pred);template<class ExecutionPolicy,class ForwardIter,class Size,class T=typename iterator_traits<ForwardIter>::value_type>    ForwardIter      search_n(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter first, ForwardIter last,               Size count,const T& value);template<class ExecutionPolicy,class ForwardIter,class Size,class T=typename iterator_traits<ForwardIter>::value_type,class BinaryPred>    ForwardIter      search_n(ExecutionPolicy&& exec,// freestanding-deleted               ForwardIter first, ForwardIter last,               Size count,const T& value, BinaryPred pred); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Pred=ranges::equal_to,class Proj= identity,class T= projected_value_t<I, Proj>>      requires indirectly_comparable<I,const T*, Pred, Proj>constexpr subrange<I>        search_n(I first, S last, iter_difference_t<I> count,const T& value, Pred pred={}, Proj proj={});template<forward_range R,class Pred=ranges::equal_to,class Proj= identity,             projected_value_t<iterator_t<R>, Proj>>      requires indirectly_comparable<iterator_t<R>,const T*, Pred, Proj>constexpr borrowed_subrange_t<R>        search_n(R&& r, range_difference_t<R> count,const T& value, Pred pred={}, Proj proj={});} template<class ForwardIter,class Searcher>constexpr ForwardIter      search(ForwardIter first, ForwardIter last,const Searcher& searcher); namespace ranges{// starts withtemplate<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexprbool starts_with(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred={},                                 Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexprbool starts_with(R1&& r1, R2&& r2, Pred pred={},                                 Proj1 proj1={}, Proj2 proj2={}); // ends withtemplate<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires(forward_iterator<I1>|| sized_sentinel_for<S1, I1>)&&(forward_iterator<I2>|| sized_sentinel_for<S2, I2>)&&               indirectly_comparable<I1, I2, Pred, Proj1, Proj2>constexprbool ends_with(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred={},                               Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2,class Pred=ranges::equal_to,class Proj1= identity,class Proj2= identity>      requires(forward_range<R1>|| sized_range<R1>)&&(forward_range<R2>|| sized_range<R2>)&&               indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2>constexprbool ends_with(R1&& r1, R2&& r2, Pred pred={},                               Proj1 proj1={}, Proj2 proj2={}); // foldtemplate<class F>class/* flipped */{// exposition only      F f;// exposition only public:template<class T,class U> requires invocable<F&, U, T>      invoke_result_t<F&, U, T> operator()(T&&, U&&);}; template<class F,class T,class I,class U>      concept/* indirectly-binary-left-foldable-impl */=// exposition only        movable<T>&& movable<U>&&        convertible_to<T, U>&& invocable<F&, U, iter_reference_t<I>>&&        assignable_from<U&, invoke_result_t<F&, U, iter_reference_t<I>>>; template<class F,class T,class I>      concept/* indirectly-binary-left-foldable */=// exposition only        copy_constructible<F>&& indirectly_readable<I>&&        invocable<F&, T, iter_reference_t<I>>&&        convertible_to<invoke_result_t<F&, T, iter_reference_t<I>>,               decay_t<invoke_result_t<F&, T, iter_reference_t<I>>>>&&/* indirectly-binary-left-foldable-impl */<F, T, I, decay_t<invoke_result_t<F&, T, iter_reference_t<I>>>>; template<class F,class T,class I>      concept/* indirectly-binary-right-foldable */=// exposition only/* indirectly-binary-left-foldable */</* flipped */<F>, T, I>; template<input_iterator I, sentinel_for<I> S,class T= iter_value_t<I>,/* indirectly-binary-left-foldable */<T, I> F>constexprauto fold_left(I first, S last, T init, F f); template<input_range R,class T= range_value_t<R>,/* indirectly-binary-left-foldable */<T, iterator_t<R>> F>constexprauto fold_left(R&& r, T init, F f); template<input_iterator I, sentinel_for<I> S,/* indirectly-binary-left-foldable */<iter_value_t<I>, I> F>      requires constructible_from<iter_value_t<I>, iter_reference_t<I>>constexprauto fold_left_first(I first, S last, F f); template<input_range R,/* indirectly-binary-left-foldable */<range_value_t<R>, iterator_t<R>> F>      requires constructible_from<range_value_t<R>, range_reference_t<R>>constexprauto fold_left_first(R&& r, F f); template<bidirectional_iterator I, sentinel_for<I> S,class T= iter_value_t<I>,/* indirectly-binary-right-foldable */<T, I> F>constexprauto fold_right(I first, S last, T init, F f); template<bidirectional_range R,class T= range_value_t<R>,/* indirectly-binary-right-foldable */<T, iterator_t<R>> F>constexprauto fold_right(R&& r, T init, F f); template<bidirectional_iterator I, sentinel_for<I> S,/* indirectly-binary-right-foldable */<iter_value_t<I>, I> F>      requires constructible_from<iter_value_t<I>, iter_reference_t<I>>constexprauto fold_right_last(I first, S last, F f); template<bidirectional_range R,/* indirectly-binary-right-foldable */<range_value_t<R>, iterator_t<R>> F>      requires constructible_from<range_value_t<R>, range_reference_t<R>>constexprauto fold_right_last(R&& r, F f); template<class I,class T>using fold_left_with_iter_result= in_value_result<I, T>;template<class I,class T>using fold_left_first_with_iter_result= in_value_result<I, T>; template<input_iterator I, sentinel_for<I> S,class T= iter_value_t<I>,/* indirectly-binary-left-foldable */<T, I> F>constexpr/* see description */ fold_left_with_iter(I first, S last, T init, F f); template<input_range R,class T= range_value_t<R>,/* indirectly-binary-left-foldable */<T, iterator_t<R>> F>constexpr/* see description */ fold_left_with_iter(R&& r, T init, F f); template<input_iterator I, sentinel_for<I> S,/* indirectly-binary-left-foldable */<iter_value_t<I>, I> F>      requires constructible_from<iter_value_t<I>, iter_reference_t<I>>constexpr/* see description */ fold_left_first_with_iter(I first, S last, F f); template<input_range R,/* indirectly-binary-left-foldable */<range_value_t<R>, iterator_t<R>> F>      requires constructible_from<range_value_t<R>, range_reference_t<R>>constexpr/* see description */ fold_left_first_with_iter(R&& r, F f);} // mutating sequence operations// copytemplate<class InputIter,class OutputIter>constexpr OutputIter copy(InputIter first, InputIter last,                              OutputIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter2 copy(ExecutionPolicy&& exec,// freestanding-deleted                      ForwardIter1 first, ForwardIter1 last,                      ForwardIter2 result); namespace ranges{template<class I,class O>using copy_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>      requires indirectly_copyable<I, O>constexpr copy_result<I, O> copy(I first, S last, O result);template<input_range R, weakly_incrementable O>      requires indirectly_copyable<iterator_t<R>, O>constexpr copy_result<borrowed_iterator_t<R>, O> copy(R&& r, O result);} template<class InputIter,class Size,class OutputIter>constexpr OutputIter copy_n(InputIter first, Size n, OutputIter result);template<class ExecutionPolicy,class ForwardIter1,class Size,class ForwardIter2>    ForwardIter2 copy_n(ExecutionPolicy&& exec,// freestanding-deleted                        ForwardIter1 first, Size n, ForwardIter2 result); namespace ranges{template<class I,class O>using copy_n_result= in_out_result<I, O>; template<input_iterator I, weakly_incrementable O>      requires indirectly_copyable<I, O>constexpr copy_n_result<I, O> copy_n(I first, iter_difference_t<I> n, O result);} template<class InputIter,class OutputIter,class Pred>constexpr OutputIter copy_if(InputIter first, InputIter last,                                 OutputIter result, Pred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class Pred>    ForwardIter2 copy_if(ExecutionPolicy&& exec,// freestanding-deleted                         ForwardIter1 first, ForwardIter1 last,                         ForwardIter2 result, Pred pred); namespace ranges{template<class I,class O>using copy_if_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,class Proj= identity, indirect_unary_predicate<projected<I, Proj>> Pred>      requires indirectly_copyable<I, O>constexpr copy_if_result<I, O>        copy_if(I first, S last, O result, Pred pred, Proj proj={});template<input_range R, weakly_incrementable O,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires indirectly_copyable<iterator_t<R>, O>constexpr copy_if_result<borrowed_iterator_t<R>, O>        copy_if(R&& r, O result, Pred pred, Proj proj={});} template<class BidirectionalIter1,class BidirectionalIter2>constexpr BidirectionalIter2      copy_backward(BidirectionalIter1 first, BidirectionalIter1 last,                    BidirectionalIter2 result); namespace ranges{template<class I1,class I2>using copy_backward_result= in_out_result<I1, I2>; template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>      requires indirectly_copyable<I1, I2>constexpr copy_backward_result<I1, I2>        copy_backward(I1 first, S1 last, I2 result);template<bidirectional_range R, bidirectional_iterator I>      requires indirectly_copyable<iterator_t<R>, I>constexpr copy_backward_result<borrowed_iterator_t<R>, I>        copy_backward(R&& r, I result);} // movetemplate<class InputIter,class OutputIter>constexpr OutputIter move(InputIter first, InputIter last, OutputIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter2 move(ExecutionPolicy&& exec,// freestanding-deleted                      ForwardIter1 first, ForwardIter1 last, ForwardIter2 result); namespace ranges{template<class I,class O>using move_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>      requires indirectly_movable<I, O>constexpr move_result<I, O> move(I first, S last, O result);template<input_range R, weakly_incrementable O>      requires indirectly_movable<iterator_t<R>, O>constexpr move_result<borrowed_iterator_t<R>, O> move(R&& r, O result);} template<class BidirectionalIter1,class BidirectionalIter2>constexpr BidirectionalIter2      move_backward(BidirectionalIter1 first, BidirectionalIter1 last,                    BidirectionalIter2 result); namespace ranges{template<class I1,class I2>using move_backward_result= in_out_result<I1, I2>; template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>      requires indirectly_movable<I1, I2>constexpr move_backward_result<I1, I2>        move_backward(I1 first, S1 last, I2 result);template<bidirectional_range R, bidirectional_iterator I>      requires indirectly_movable<iterator_t<R>, I>constexpr move_backward_result<borrowed_iterator_t<R>, I>        move_backward(R&& r, I result);} // swaptemplate<class ForwardIter1,class ForwardIter2>constexpr ForwardIter2 swap_ranges(ForwardIter1 first1, ForwardIter1 last1,                                       ForwardIter2 first2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter2 swap_ranges(ExecutionPolicy&& exec,// freestanding-deleted                             ForwardIter1 first1, ForwardIter1 last1,                             ForwardIter2 first2); namespace ranges{template<class I1,class I2>using swap_ranges_result= in_in_result<I1, I2>; template<input_iterator I1, sentinel_for<I1> S1,             input_iterator I2, sentinel_for<I2> S2>      requires indirectly_swappable<I1, I2>constexpr swap_ranges_result<I1, I2>        swap_ranges(I1 first1, S1 last1, I2 first2, S2 last2);template<input_range R1, input_range R2>      requires indirectly_swappable<iterator_t<R1>, iterator_t<R2>>constexpr swap_ranges_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>        swap_ranges(R1&& r1, R2&& r2);} template<class ForwardIter1,class ForwardIter2>constexprvoid iter_swap(ForwardIter1 a, ForwardIter2 b); // transformtemplate<class InputIter,class OutputIter,class UnaryOperation>constexpr OutputIter      transform(InputIter first1, InputIter last1,                OutputIter result, UnaryOperation op);template<class InputIter1,class InputIter2,class OutputIter,class BinaryOperation>constexpr OutputIter      transform(InputIter1 first1, InputIter1 last1,                InputIter2 first2, OutputIter result,                BinaryOperation binary_op);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class UnaryOperation>    ForwardIter2      transform(ExecutionPolicy&& exec,// freestanding-deleted                ForwardIter1 first1, ForwardIter1 last1,                ForwardIter2 result, UnaryOperation op);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter,class BinaryOperation>    ForwardIter      transform(ExecutionPolicy&& exec,// freestanding-deleted                ForwardIter1 first1, ForwardIter1 last1,                ForwardIter2 first2, ForwardIter result,                BinaryOperation binary_op); namespace ranges{template<class I,class O>using unary_transform_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,             copy_constructible F,class Proj= identity>      requires indirectly_writable<O, indirect_result_t<F&,projected<I, Proj>>>constexpr unary_transform_result<I, O>        transform(I first1, S last1, O result, F op, Proj proj={});template<input_range R, weakly_incrementable O,             copy_constructible F,class Proj= identity>      requires        indirectly_writable<O, indirect_result_t<F&,projected<iterator_t<R>, Proj>>>constexpr unary_transform_result<borrowed_iterator_t<R>, O>        transform(R&& r, O result, F op, Proj proj={}); template<class I1,class I2,class O>using binary_transform_result= in_in_out_result<I1, I2, O>; template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2, weakly_incrementable O, copy_constructible F,class Proj1= identity,class Proj2= identity>      requires indirectly_writable<O, indirect_result_t<F&,projected<I1, Proj1>,projected<I2, Proj2>>>constexpr binary_transform_result<I1, I2, O>        transform(I1 first1, S1 last1, I2 first2, S2 last2, O result,                  F binary_op, Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2, weakly_incrementable O,             copy_constructible F,class Proj1= identity,class Proj2= identity>      requires indirectly_writable<O, indirect_result_t<F&,projected<iterator_t<R1>, Proj1>,projected<iterator_t<R2>, Proj2>>>constexpr binary_transform_result<borrowed_iterator_t<R1>,                                        borrowed_iterator_t<R2>, O>        transform(R1&& r1, R2&& r2, O result,                  F binary_op, Proj1 proj1={}, Proj2 proj2={});} // replacetemplate<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>constexprvoid replace(ForwardIter first, ForwardIter last,const T& old_value,const T& new_value);template<class ExecutionPolicy,class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>void replace(ExecutionPolicy&& exec,// freestanding-deleted                 ForwardIter first, ForwardIter last,const T& old_value,const T& new_value);template<class ForwardIter,class Pred,class T=typename iterator_traits<ForwardIter>::value_type>constexprvoid replace_if(ForwardIter first, ForwardIter last,                              Pred pred,const T& new_value);template<class ExecutionPolicy,class ForwardIter,class Pred,class T=typename iterator_traits<ForwardIter>::value_type>void replace_if(ExecutionPolicy&& exec,// freestanding-deleted                    ForwardIter first, ForwardIter last,                    Pred pred,const T& new_value); namespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identity,class T1= projected_value_t<I, Proj>,class T2= T1>      requires indirectly_writable<I,const T2&>&&               indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T1*>constexpr I replace(I first, S last,const T1& old_value,const T2& new_value, Proj proj={});template<input_range R,class Proj= identity,class T1= projected_value_t<iterator_t<R>, Proj>,class T2= T1>      requires indirectly_writable<iterator_t<R>,const T2&>&&               indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T1*>constexpr borrowed_iterator_t<R> replace(R&& r,const T1& old_value,const T2& new_value, Proj proj={});template<input_iterator I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>,             indirect_unary_predicate<projected<I, Proj>> Pred>      requires indirectly_writable<I,const T&>constexpr I replace_if(I first, S last, Pred pred,const T& new_value, Proj proj={});template<input_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires indirectly_writable<iterator_t<R>,const T&>constexpr borrowed_iterator_t<R> replace_if(R&& r, Pred pred,const T& new_value, Proj proj={});} template<class InputIter,class OutputIter,class T>constexpr OutputIter replace_copy(InputIter first, InputIter last, OutputIter result,const T& old_value,const T& new_value);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class T>    ForwardIter2 replace_copy(ExecutionPolicy&& exec,// freestanding-deleted                              ForwardIter1 first, ForwardIter1 last, ForwardIter2 result,const T& old_value,const T& new_value);template<class InputIter,class OutputIter,class Pred,class T=typename iterator_traits<OutputIter>::value_type>constexpr OutputIter replace_copy_if(InputIter first, InputIter last,                                         OutputIter result,                                         Pred pred,const T& new_value);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class Pred,class T=typename iterator_traits<ForwardIter2>::value_type>    ForwardIter2 replace_copy_if(ExecutionPolicy&& exec,// freestanding-deleted                                 ForwardIter1 first, ForwardIter1 last,                                 ForwardIter2 result,                                 Pred pred,const T& new_value); namespace ranges{template<class I,class O>using replace_copy_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S,class O,class Proj= identity,class T1= projected_value_t<I, Proj>,class T2= iter_value_t<O>>      requires indirectly_copyable<I, O>&&               indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T1*>&&               output_iterator<O,const T2&>constexpr replace_copy_result<I, O>        replace_copy(I first, S last, O result,const T1& old_value,const T2& new_value, Proj proj={});template<input_range R,class O,class Proj= identity,class T1= projected_value_t<iterator_t<R>, Proj>,class T2= iter_value_t<O>>      requires indirectly_copyable<iterator_t<R>, O>&&               indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T1*>&&               output_iterator<O,const T2&>constexpr replace_copy_result<borrowed_iterator_t<R>, O>        replace_copy(R&& r, O result,const T1& old_value,const T2& new_value, Proj proj={}); template<class I,class O>using replace_copy_if_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S,class O,class T= iter_value_t<O>,class Proj= identity, indirect_unary_predicate<projected<I, Proj>> Pred>      requires indirectly_copyable<I, O>&& output_iterator<O,const T&>constexpr replace_copy_if_result<I, O>        replace_copy_if(I first, S last, O result, Pred pred,const T& new_value, Proj proj={});template<input_range R,class O,class T= iter_value_t<O>,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires indirectly_copyable<iterator_t<R>, O>&& output_iterator<O,const T&>constexpr replace_copy_if_result<borrowed_iterator_t<R>, O>        replace_copy_if(R&& r, O result, Pred pred,const T& new_value, Proj proj={});} // filltemplate<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>constexprvoid fill(ForwardIter first, ForwardIter last,const T& value);template<class ExecutionPolicy,class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>void fill(ExecutionPolicy&& exec,// freestanding-deleted              ForwardIter first, ForwardIter last,const T& value);template<class OutputIter,class Size,class T=typename iterator_traits<OutputIter>::value_type>constexpr OutputIter fill_n(OutputIter first, Size n,const T& value);template<class ExecutionPolicy,class ForwardIter,class Size,class T=typename iterator_traits<OutputIter>::value_type>    ForwardIter fill_n(ExecutionPolicy&& exec,// freestanding-deleted                       ForwardIter first, Size n,const T& value); namespace ranges{template<class O, sentinel_for<O> S,class T= iter_value_t<O>>      requires output_iterator<O,const T&>constexpr O fill(O first, S last,const T& value);template<class R,class T= range_value_t<R>>      requires output_range<R,const T&>constexpr borrowed_iterator_t<R> fill(R&& r,const T& value);template<class O,class T= iter_value_t<O>>      requires output_iterator<O,const T&>constexpr O fill_n(O first, iter_difference_t<O> n,const T& value);} // generatetemplate<class ForwardIter,class Generator>constexprvoid generate(ForwardIter first, ForwardIter last, Generator gen);template<class ExecutionPolicy,class ForwardIter,class Generator>void generate(ExecutionPolicy&& exec,// freestanding-deleted                  ForwardIter first, ForwardIter last, Generator gen);template<class OutputIter,class Size,class Generator>constexpr OutputIter generate_n(OutputIter first, Size n, Generator gen);template<class ExecutionPolicy,class ForwardIter,class Size,class Generator>    ForwardIter generate_n(ExecutionPolicy&& exec,// freestanding-deleted                           ForwardIter first, Size n, Generator gen); namespace ranges{template<input_or_output_iterator O, sentinel_for<O> S, copy_constructible F>      requires invocable<F&>&& indirectly_writable<O, invoke_result_t<F&>>constexpr O generate(O first, S last, F gen);template<class R, copy_constructible F>      requires invocable<F&>&& output_range<R, invoke_result_t<F&>>constexpr borrowed_iterator_t<R> generate(R&& r, F gen);template<input_or_output_iterator O, copy_constructible F>      requires invocable<F&>&& indirectly_writable<O, invoke_result_t<F&>>constexpr O generate_n(O first, iter_difference_t<O> n, F gen);} // removetemplate<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>constexpr ForwardIter remove(ForwardIter first, ForwardIter last,const T& value);template<class ExecutionPolicy,class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>    ForwardIter remove(ExecutionPolicy&& exec,// freestanding-deleted                       ForwardIter first, ForwardIter last,const T& value);template<class ForwardIter,class Pred>constexpr ForwardIter remove_if(ForwardIter first, ForwardIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>    ForwardIter remove_if(ExecutionPolicy&& exec,// freestanding-deleted                          ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<permutable I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>>      requires indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T*>constexpr subrange<I> remove(I first, S last,const T& value, Proj proj={});template<forward_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>>      requires permutable<iterator_t<R>>&&               indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T*>constexpr borrowed_subrange_t<R> remove(R&& r,const T& value, Proj proj={});template<permutable I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr subrange<I> remove_if(I first, S last, Pred pred, Proj proj={});template<forward_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires permutable<iterator_t<R>>constexpr borrowed_subrange_t<R> remove_if(R&& r, Pred pred, Proj proj={});} template<class InputIter,class OutputIter,class T=typename iterator_traits<InputIter>::value_type>constexpr OutputIter remove_copy(InputIter first, InputIter last,                                     OutputIter result,const T& value);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class T=typename iterator_traits<ForwardIter1>::value_type>    ForwardIter2 remove_copy(ExecutionPolicy&& exec,// freestanding-deleted                             ForwardIter1 first, ForwardIter1 last,                             ForwardIter2 result,const T& value);template<class InputIter,class OutputIter,class Pred>constexpr OutputIter remove_copy_if(InputIter first, InputIter last,                                        OutputIter result, Pred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class Pred>    ForwardIter2 remove_copy_if(ExecutionPolicy&& exec,// freestanding-deleted                                ForwardIter1 first, ForwardIter1 last,                                ForwardIter2 result, Pred pred); namespace ranges{template<class I,class O>using remove_copy_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,class Proj= identity,class T= projected_value_t<I, Proj>>      requires indirectly_copyable<I, O>&&               indirect_binary_predicate<ranges::equal_to,projected<I, Proj>,const T*>constexpr remove_copy_result<I, O>        remove_copy(I first, S last, O result,const T& value, Proj proj={});template<input_range R, weakly_incrementable O,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>>      requires indirectly_copyable<iterator_t<R>, O>&&               indirect_binary_predicate<ranges::equal_to,projected<iterator_t<R>, Proj>,const T*>constexpr remove_copy_result<borrowed_iterator_t<R>, O>        remove_copy(R&& r, O result,const T& value, Proj proj={}); template<class I,class O>using remove_copy_if_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,class Proj= identity, indirect_unary_predicate<projected<I, Proj>> Pred>      requires indirectly_copyable<I, O>constexpr remove_copy_if_result<I, O>        remove_copy_if(I first, S last, O result, Pred pred, Proj proj={});template<input_range R, weakly_incrementable O,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires indirectly_copyable<iterator_t<R>, O>constexpr remove_copy_if_result<borrowed_iterator_t<R>, O>        remove_copy_if(R&& r, O result, Pred pred, Proj proj={});} // uniquetemplate<class ForwardIter>constexpr ForwardIter unique(ForwardIter first, ForwardIter last);template<class ForwardIter,class BinaryPred>constexpr ForwardIter unique(ForwardIter first, ForwardIter last, BinaryPred pred);template<class ExecutionPolicy,class ForwardIter>    ForwardIter unique(ExecutionPolicy&& exec,// freestanding-deleted                       ForwardIter first, ForwardIter last);template<class ExecutionPolicy,class ForwardIter,class BinaryPred>    ForwardIter unique(ExecutionPolicy&& exec,// freestanding-deleted                       ForwardIter first, ForwardIter last, BinaryPred pred); namespace ranges{template<permutable I, sentinel_for<I> S,class Proj= identity,             indirect_equivalence_relation<projected<I, Proj>> C=ranges::equal_to>constexpr subrange<I> unique(I first, S last, C comp={}, Proj proj={});template<forward_range R,class Proj= identity,             indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C=ranges::equal_to>      requires permutable<iterator_t<R>>constexpr borrowed_subrange_t<R> unique(R&& r, C comp={}, Proj proj={});} template<class InputIter,class OutputIter>constexpr OutputIter unique_copy(InputIter first, InputIter last,                                     OutputIter result);template<class InputIter,class OutputIter,class BinaryPred>constexpr OutputIter unique_copy(InputIter first, InputIter last,                                     OutputIter result, BinaryPred pred);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter2 unique_copy(ExecutionPolicy&& exec,// freestanding-deleted                             ForwardIter1 first, ForwardIter1 last,                             ForwardIter2 result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class BinaryPred>    ForwardIter2 unique_copy(ExecutionPolicy&& exec,// freestanding-deleted                             ForwardIter1 first, ForwardIter1 last,                             ForwardIter2 result, BinaryPred pred); namespace ranges{template<class I,class O>using unique_copy_result= in_out_result<I, O>; template<input_iterator I, sentinel_for<I> S,             weakly_incrementable O,class Proj= identity,             indirect_equivalence_relation<projected<I, Proj>> C=ranges::equal_to>      requires indirectly_copyable<I, O>&&(forward_iterator<I>||(input_iterator<O>&& same_as<iter_value_t<I>, iter_value_t<O>>)||                indirectly_copyable_storable<I, O>)constexpr unique_copy_result<I, O>        unique_copy(I first, S last, O result, C comp={}, Proj proj={});template<input_range R, weakly_incrementable O,class Proj= identity,             indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C=ranges::equal_to>      requires indirectly_copyable<iterator_t<R>, O>&&(forward_iterator<iterator_t<R>>||(input_iterator<O>&& same_as<range_value_t<R>, iter_value_t<O>>)||                indirectly_copyable_storable<iterator_t<R>, O>)constexpr unique_copy_result<borrowed_iterator_t<R>, O>        unique_copy(R&& r, O result, C comp={}, Proj proj={});} // reversetemplate<class BidirectionalIter>constexprvoid reverse(BidirectionalIter first, BidirectionalIter last);template<class ExecutionPolicy,class BidirectionalIter>void reverse(ExecutionPolicy&& exec,// freestanding-deleted                 BidirectionalIter first, BidirectionalIter last); namespace ranges{template<bidirectional_iterator I, sentinel_for<I> S>      requires permutable<I>constexpr I reverse(I first, S last);template<bidirectional_range R>      requires permutable<iterator_t<R>>constexpr borrowed_iterator_t<R> reverse(R&& r);} template<class BidirectionalIter,class OutputIter>constexpr OutputIter reverse_copy(BidirectionalIter first, BidirectionalIter last,                                      OutputIter result);template<class ExecutionPolicy,class BidirectionalIter,class ForwardIter>    ForwardIter reverse_copy(ExecutionPolicy&& exec,// freestanding-deleted                             BidirectionalIter first, BidirectionalIter last,                             ForwardIter result); namespace ranges{template<class I,class O>using reverse_copy_result= in_out_result<I, O>; template<bidirectional_iterator I, sentinel_for<I> S, weakly_incrementable O>      requires indirectly_copyable<I, O>constexpr reverse_copy_result<I, O>        reverse_copy(I first, S last, O result);template<bidirectional_range R, weakly_incrementable O>      requires indirectly_copyable<iterator_t<R>, O>constexpr reverse_copy_result<borrowed_iterator_t<R>, O>        reverse_copy(R&& r, O result);} // rotatetemplate<class ForwardIter>constexpr ForwardIter rotate(ForwardIter first, ForwardIter middle, ForwardIter last);template<class ExecutionPolicy,class ForwardIter>    ForwardIter rotate(ExecutionPolicy&& exec,// freestanding-deleted                       ForwardIter first, ForwardIter middle, ForwardIter last); namespace ranges{template<permutable I, sentinel_for<I> S>constexpr subrange<I> rotate(I first, I middle, S last);template<forward_range R>      requires permutable<iterator_t<R>>constexpr borrowed_subrange_t<R> rotate(R&& r, iterator_t<R> middle);} template<class ForwardIter,class OutputIter>constexpr OutputIter rotate_copy(ForwardIter first, ForwardIter middle,                                     ForwardIter last, OutputIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>    ForwardIter2 rotate_copy(ExecutionPolicy&& exec,// freestanding-deleted                             ForwardIter1 first, ForwardIter1 middle,                             ForwardIter1 last, ForwardIter2 result); namespace ranges{template<class I,class O>using rotate_copy_result= in_out_result<I, O>; template<forward_iterator I, sentinel_for<I> S, weakly_incrementable O>      requires indirectly_copyable<I, O>constexpr rotate_copy_result<I, O>        rotate_copy(I first, I middle, S last, O result);template<forward_range R, weakly_incrementable O>      requires indirectly_copyable<iterator_t<R>, O>constexpr rotate_copy_result<borrowed_iterator_t<R>, O>        rotate_copy(R&& r, iterator_t<R> middle, O result);} // sampletemplate<class PopulationIter,class SampleIter,class Distance,classUniformRandomBitGenerator>    SampleIter sample(PopulationIter first, PopulationIter last,                      SampleIter out, Distance n,UniformRandomBitGenerator&& g); namespace ranges{template<input_iterator I, sentinel_for<I> S,             weakly_incrementable O,class Gen>      requires(forward_iterator<I>|| random_access_iterator<O>)&&               indirectly_copyable<I, O>&&               uniform_random_bit_generator<remove_reference_t<Gen>>      O sample(I first, S last, O out, iter_difference_t<I> n, Gen&& g);template<input_range R, weakly_incrementable O,class Gen>      requires(forward_range<R>|| random_access_iterator<O>)&&               indirectly_copyable<iterator_t<R>, O>&&               uniform_random_bit_generator<remove_reference_t<Gen>>      O sample(R&& r, O out, range_difference_t<R> n, Gen&& g);} // shuffletemplate<class RandomAccessIter,classUniformRandomBitGenerator>void shuffle(RandomAccessIter first, RandomAccessIter last,UniformRandomBitGenerator&& g); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Gen>      requires permutable<I>&&               uniform_random_bit_generator<remove_reference_t<Gen>>      I shuffle(I first, S last, Gen&& g);template<random_access_range R,class Gen>      requires permutable<iterator_t<R>>&&               uniform_random_bit_generator<remove_reference_t<Gen>>      borrowed_iterator_t<R> shuffle(R&& r, Gen&& g);} // shifttemplate<class ForwardIter>constexpr ForwardIter      shift_left(ForwardIter first, ForwardIter last,typename iterator_traits<ForwardIter>::difference_type n);template<class ExecutionPolicy,class ForwardIter>    ForwardIter      shift_left(ExecutionPolicy&& exec,// freestanding-deleted                 ForwardIter first, ForwardIter last,typename iterator_traits<ForwardIter>::difference_type n); namespace ranges{template<permutable I, sentinel_for<I> S>constexpr subrange<I> shift_left(I first, S last, iter_difference_t<I> n);template<forward_range R>      requires permutable<iterator_t<R>>constexpr borrowed_subrange_t<R> shift_left(R&& r, range_difference_t<R> n);} template<class ForwardIter>constexpr ForwardIter      shift_right(ForwardIter first, ForwardIter last,typename iterator_traits<ForwardIter>::difference_type n);template<class ExecutionPolicy,class ForwardIter>    ForwardIter      shift_right(ExecutionPolicy&& exec,// freestanding-deleted                  ForwardIter first, ForwardIter last,typename iterator_traits<ForwardIter>::difference_type n); namespace ranges{template<permutable I, sentinel_for<I> S>constexpr subrange<I> shift_right(I first, S last, iter_difference_t<I> n);template<forward_range R>      requires permutable<iterator_t<R>>constexpr borrowed_subrange_t<R> shift_right(R&& r, range_difference_t<R> n);} // sorting and related operations// sortingtemplate<class RandomAccessIter>constexprvoid sort(RandomAccessIter first, RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprvoid sort(RandomAccessIter first, RandomAccessIter last, Compare comp);template<class ExecutionPolicy,class RandomAccessIter>void sort(ExecutionPolicy&& exec,// freestanding-deleted              RandomAccessIter first, RandomAccessIter last);template<class ExecutionPolicy,class RandomAccessIter,class Compare>void sort(ExecutionPolicy&& exec,// freestanding-deleted              RandomAccessIter first, RandomAccessIter last, Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr I sort(I first, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr borrowed_iterator_t<R> sort(R&& r, Comp comp={}, Proj proj={});} template<class RandomAccessIter>void stable_sort(RandomAccessIter first, RandomAccessIter last);// hostedtemplate<class RandomAccessIter,class Compare>void stable_sort(RandomAccessIter first, RandomAccessIter last, Compare comp);// hostedtemplate<class ExecutionPolicy,class RandomAccessIter>void stable_sort(ExecutionPolicy&& exec,// hosted                     RandomAccessIter first, RandomAccessIter last);template<class ExecutionPolicy,class RandomAccessIter,class Compare>void stable_sort(ExecutionPolicy&& exec,// hosted                     RandomAccessIter first, RandomAccessIter last, Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>      I stable_sort(I first, S last, Comp comp={}, Proj proj={});// hostedtemplate<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>      borrowed_iterator_t<R> stable_sort(R&& r, Comp comp={}, Proj proj={});// hosted} template<class RandomAccessIter>constexprvoid partial_sort(RandomAccessIter first, RandomAccessIter middle,                                RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprvoid partial_sort(RandomAccessIter first, RandomAccessIter middle,                                RandomAccessIter last, Compare comp);template<class ExecutionPolicy,class RandomAccessIter>void partial_sort(ExecutionPolicy&& exec,// freestanding-deleted                      RandomAccessIter first, RandomAccessIter middle,                      RandomAccessIter last);template<class ExecutionPolicy,class RandomAccessIter,class Compare>void partial_sort(ExecutionPolicy&& exec,// freestanding-deleted                      RandomAccessIter first, RandomAccessIter middle,                      RandomAccessIter last, Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr I        partial_sort(I first, I middle, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr borrowed_iterator_t<R>        partial_sort(R&& r, iterator_t<R> middle, Comp comp={}, Proj proj={});} template<class InputIter,class RandomAccessIter>constexpr RandomAccessIter      partial_sort_copy(InputIter first, InputIter last,                        RandomAccessIter result_first,                        RandomAccessIter result_last);template<class InputIter,class RandomAccessIter,class Compare>constexpr RandomAccessIter      partial_sort_copy(InputIter first, InputIter last,                        RandomAccessIter result_first,                        RandomAccessIter result_last, Compare comp);template<class ExecutionPolicy,class ForwardIter,class RandomAccessIter>    RandomAccessIter      partial_sort_copy(ExecutionPolicy&& exec,// freestanding-deleted                        ForwardIter first, ForwardIter last,                        RandomAccessIter result_first,                        RandomAccessIter result_last);template<class ExecutionPolicy,class ForwardIter,class RandomAccessIter,class Compare>    RandomAccessIter      partial_sort_copy(ExecutionPolicy&& exec,// freestanding-deleted                        ForwardIter first, ForwardIter last,                        RandomAccessIter result_first,                        RandomAccessIter result_last, Compare comp); namespace ranges{template<class I,class O>using partial_sort_copy_result= in_out_result<I, O>; template<input_iterator I1, sentinel_for<I1> S1,             random_access_iterator I2, sentinel_for<I2> S2,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires indirectly_copyable<I1, I2>&& sortable<I2, Comp, Proj2>&&               indirect_strict_weak_order<Comp,projected<I1, Proj1>,projected<I2, Proj2>>constexpr partial_sort_copy_result<I1, I2>        partial_sort_copy(I1 first, S1 last, I2 result_first, S2 result_last,                          Comp comp={}, Proj1 proj1={}, Proj2 proj2={});template<input_range R1, random_access_range R2,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires indirectly_copyable<iterator_t<R1>, iterator_t<R2>>&&               sortable<iterator_t<R2>, Comp, Proj2>&&               indirect_strict_weak_order<Comp,projected<iterator_t<R1>, Proj1>,projected<iterator_t<R2>, Proj2>>constexpr partial_sort_copy_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>        partial_sort_copy(R1&& r, R2&& result_r, Comp comp={},                          Proj1 proj1={}, Proj2 proj2={});} template<class ForwardIter>constexprbool is_sorted(ForwardIter first, ForwardIter last);template<class ForwardIter,class Compare>constexprbool is_sorted(ForwardIter first, ForwardIter last, Compare comp);template<class ExecutionPolicy,class ForwardIter>bool is_sorted(ExecutionPolicy&& exec,// freestanding-deleted                   ForwardIter first, ForwardIter last);template<class ExecutionPolicy,class ForwardIter,class Compare>bool is_sorted(ExecutionPolicy&& exec,// freestanding-deleted                   ForwardIter first, ForwardIter last, Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_strict_weak_order<projected<I, Proj>> Comp=ranges::less>constexprbool is_sorted(I first, S last, Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>constexprbool is_sorted(R&& r, Comp comp={}, Proj proj={});} template<class ForwardIter>constexpr ForwardIter is_sorted_until(ForwardIter first, ForwardIter last);template<class ForwardIter,class Compare>constexpr ForwardIter is_sorted_until(ForwardIter first, ForwardIter last,                                          Compare comp);template<class ExecutionPolicy,class ForwardIter>    ForwardIter is_sorted_until(ExecutionPolicy&& exec,// freestanding-deleted                                ForwardIter first, ForwardIter last);template<class ExecutionPolicy,class ForwardIter,class Compare>    ForwardIter is_sorted_until(ExecutionPolicy&& exec,// freestanding-deleted                                ForwardIter first, ForwardIter last,                                Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_strict_weak_order<projected<I, Proj>> Comp=ranges::less>constexpr I is_sorted_until(I first, S last, Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr borrowed_iterator_t<R>        is_sorted_until(R&& r, Comp comp={}, Proj proj={});} // Nth elementtemplate<class RandomAccessIter>constexprvoid nth_element(RandomAccessIter first, RandomAccessIter nth,                               RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprvoid nth_element(RandomAccessIter first, RandomAccessIter nth,                               RandomAccessIter last, Compare comp);template<class ExecutionPolicy,class RandomAccessIter>void nth_element(ExecutionPolicy&& exec,// freestanding-deleted                     RandomAccessIter first, RandomAccessIter nth,                     RandomAccessIter last);template<class ExecutionPolicy,class RandomAccessIter,class Compare>void nth_element(ExecutionPolicy&& exec,// freestanding-deleted                     RandomAccessIter first, RandomAccessIter nth,                     RandomAccessIter last, Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr I        nth_element(I first, I nth, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr borrowed_iterator_t<R>        nth_element(R&& r, iterator_t<R> nth, Comp comp={}, Proj proj={});} // binary searchtemplate<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>constexpr ForwardIter lower_bound(ForwardIter first, ForwardIter last,const T& value);template<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type,class Compare>constexpr ForwardIter lower_bound(ForwardIter first, ForwardIter last,const T& value, Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>,             indirect_strict_weak_order<const T*,projected<I, Proj>> Comp=ranges::less>constexpr I          lower_bound(I first, S last,const T& value, Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>,             indirect_strict_weak_order<const T*,projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr borrowed_iterator_t<R>        lower_bound(R&& r,const T& value, Comp comp={}, Proj proj={});} template<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>constexpr ForwardIter upper_bound(ForwardIter first, ForwardIter last,const T& value);template<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type,class Compare>constexpr ForwardIter upper_bound(ForwardIter first, ForwardIter last,const T& value, Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>,             indirect_strict_weak_order<const T*,projected<I, Proj>> Comp=ranges::less>constexpr I          upper_bound(I first, S last,const T& value, Comp comp={}, Proj proj={});template<forward_range R,class T,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>,             indirect_strict_weak_order<const T*,projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr borrowed_iterator_t<R>        upper_bound(R&& r,const T& value, Comp comp={}, Proj proj={});} template<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>constexpr pair<ForwardIter, ForwardIter>      equal_range(ForwardIter first, ForwardIter last,const T& value);template<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type,class Compare>constexpr pair<ForwardIter, ForwardIter>      equal_range(ForwardIter first, ForwardIter last,const T& value, Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>,             indirect_strict_weak_order<const T*,projected<I, Proj>> Comp=ranges::less>constexpr subrange<I>        equal_range(I first, S last,const T& value, Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>,             indirect_strict_weak_order<const T*,projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr borrowed_subrange_t<R>        equal_range(R&& r,const T& value, Comp comp={}, Proj proj={});} template<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type>constexprbool binary_search(ForwardIter first, ForwardIter last,const T& value);template<class ForwardIter,class T=typename iterator_traits<ForwardIter>::value_type,class Compare>constexprbool binary_search(ForwardIter first, ForwardIter last,const T& value, Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,class T= projected_value_t<I, Proj>,             indirect_strict_weak_order<const T*,projected<I, Proj>> Comp=ranges::less>constexprbool binary_search(I first, S last,const T& value,                                   Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,class T= projected_value_t<iterator_t<R>, Proj>,             indirect_strict_weak_order<const T*,projected<iterator_t<R>, Proj>> Comp=ranges::less>constexprbool binary_search(R&& r,const T& value, Comp comp={}, Proj proj={});} // partitionstemplate<class InputIter,class Pred>constexprbool is_partitioned(InputIter first, InputIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>bool is_partitioned(ExecutionPolicy&& exec,// freestanding-deleted                        ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<input_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexprbool is_partitioned(I first, S last, Pred pred, Proj proj={});template<input_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexprbool is_partitioned(R&& r, Pred pred, Proj proj={});} template<class ForwardIter,class Pred>constexpr ForwardIter partition(ForwardIter first, ForwardIter last, Pred pred);template<class ExecutionPolicy,class ForwardIter,class Pred>    ForwardIter partition(ExecutionPolicy&& exec,// freestanding-deleted                          ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<permutable I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr subrange<I> partition(I first, S last, Pred pred, Proj proj={});template<forward_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires permutable<iterator_t<R>>constexpr borrowed_subrange_t<R> partition(R&& r, Pred pred, Proj proj={});} template<class BidirectionalIter,class Pred>    BidirectionalIter stable_partition(BidirectionalIter first,// hosted                                       BidirectionalIter last, Pred pred);template<class ExecutionPolicy,class BidirectionalIter,class Pred>    BidirectionalIter stable_partition(ExecutionPolicy&& exec,// hosted                                       BidirectionalIter first,                                       BidirectionalIter last, Pred pred); namespace ranges{template<bidirectional_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>      requires permutable<I>      subrange<I> stable_partition(I first, S last, Pred pred, Proj proj={});// hostedtemplate<bidirectional_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires permutable<iterator_t<R>>      borrowed_subrange_t<R> stable_partition(R&& r, Pred pred, Proj proj={});// hosted} template<class InputIter,class OutputIter1,class OutputIter2,class Pred>constexpr pair<OutputIter1, OutputIter2>      partition_copy(InputIter first, InputIter last,                     OutputIter1 out_true, OutputIter2 out_false, Pred pred);template<class ExecutionPolicy,class ForwardIter,class ForwardIter1,class ForwardIter2,class Pred>    pair<ForwardIter1, ForwardIter2>      partition_copy(ExecutionPolicy&& exec,// freestanding-deleted                     ForwardIter first, ForwardIter last,                     ForwardIter1 out_true, ForwardIter2 out_false, Pred pred); namespace ranges{template<class I,class O1,class O2>using partition_copy_result= in_out_out_result<I, O1, O2>; template<input_iterator I, sentinel_for<I> S,             weakly_incrementable O1, weakly_incrementable O2,class Proj= identity, indirect_unary_predicate<projected<I, Proj>> Pred>      requires indirectly_copyable<I, O1>&& indirectly_copyable<I, O2>constexpr partition_copy_result<I, O1, O2>        partition_copy(I first, S last, O1 out_true, O2 out_false,                       Pred pred, Proj proj={});template<input_range R, weakly_incrementable O1, weakly_incrementable O2,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>      requires indirectly_copyable<iterator_t<R>, O1>&&               indirectly_copyable<iterator_t<R>, O2>constexpr partition_copy_result<borrowed_iterator_t<R>, O1, O2>        partition_copy(R&& r, O1 out_true, O2 out_false, Pred pred, Proj proj={});} template<class ForwardIter,class Pred>constexpr ForwardIter      partition_point(ForwardIter first, ForwardIter last, Pred pred); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_unary_predicate<projected<I, Proj>> Pred>constexpr I partition_point(I first, S last, Pred pred, Proj proj={});template<forward_range R,class Proj= identity,             indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>constexpr borrowed_iterator_t<R>        partition_point(R&& r, Pred pred, Proj proj={});} // mergetemplate<class InputIter1,class InputIter2,class OutputIter>constexpr OutputIter merge(InputIter1 first1, InputIter1 last1,                               InputIter2 first2, InputIter2 last2, OutputIter result);template<class InputIter1,class InputIter2,class OutputIter,class Compare>constexpr OutputIter merge(InputIter1 first1, InputIter1 last1,                               InputIter2 first2, InputIter2 last2,                               OutputIter result, Compare comp);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter>    ForwardIter merge(ExecutionPolicy&& exec,// freestanding-deleted                      ForwardIter1 first1, ForwardIter1 last1,                      ForwardIter2 first2, ForwardIter2 last2, ForwardIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter,class Compare>    ForwardIter merge(ExecutionPolicy&& exec,// freestanding-deleted                      ForwardIter1 first1, ForwardIter1 last1,                      ForwardIter2 first2, ForwardIter2 last2,                      ForwardIter result, Compare comp); namespace ranges{template<class I1,class I2,class O>using merge_result= in_in_out_result<I1, I2, O>; template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<I1, I2, O, Comp, Proj1, Proj2>constexpr merge_result<I1, I2, O>        merge(I1 first1, S1 last1, I2 first2, S2 last2, O result,              Comp comp={}, Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<iterator_t<R1>, iterator_t<R2>, O, Comp, Proj1, Proj2>constexpr merge_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>, O>        merge(R1&& r1, R2&& r2, O result,              Comp comp={}, Proj1 proj1={}, Proj2 proj2={});} template<class BidirectionalIter>void inplace_merge(BidirectionalIter first, BidirectionalIter middle,// hosted                       BidirectionalIter last);template<class BidirectionalIter,class Compare>void inplace_merge(BidirectionalIter first, BidirectionalIter middle,// hosted                       BidirectionalIter last, Compare comp);template<class ExecutionPolicy,class BidirectionalIter>void inplace_merge(ExecutionPolicy&& exec,// hosted                       BidirectionalIter first, BidirectionalIter middle,                       BidirectionalIter last);template<class ExecutionPolicy,class BidirectionalIter,class Compare>void inplace_merge(ExecutionPolicy&& exec,// hosted                       BidirectionalIter first, BidirectionalIter middle,                       BidirectionalIter last, Compare comp); namespace ranges{template<bidirectional_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>      I inplace_merge(I first, I middle, S last, Comp comp={}, Proj proj={});// hostedtemplate<bidirectional_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>      borrowed_iterator_t<R> inplace_merge(R&& r, iterator_t<R> middle,// hosted                                           Comp comp={}, Proj proj={});} // set operationstemplate<class InputIter1,class InputIter2>constexprbool includes(InputIter1 first1, InputIter1 last1,                            InputIter2 first2, InputIter2 last2);template<class InputIter1,class InputIter2,class Compare>constexprbool includes(InputIter1 first1, InputIter1 last1,                            InputIter2 first2, InputIter2 last2, Compare comp);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>bool includes(ExecutionPolicy&& exec,// freestanding-deleted                  ForwardIter1 first1, ForwardIter1 last1,                  ForwardIter2 first2, ForwardIter2 last2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class Compare>bool includes(ExecutionPolicy&& exec,// freestanding-deleted                  ForwardIter1 first1, ForwardIter1 last1,                  ForwardIter2 first2, ForwardIter2 last2, Compare comp); namespace ranges{template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2,class Proj1= identity,class Proj2= identity,             indirect_strict_weak_order<projected<I1, Proj1>,projected<I2, Proj2>> Comp=ranges::less>constexprbool includes(I1 first1, S1 last1, I2 first2, S2 last2, Comp comp={},                              Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2,class Proj1= identity,class Proj2= identity,             indirect_strict_weak_order<projected<iterator_t<R1>, Proj1>,projected<iterator_t<R2>, Proj2>> Comp=ranges::less>constexprbool includes(R1&& r1, R2&& r2, Comp comp={},                              Proj1 proj1={}, Proj2 proj2={});} template<class InputIter1,class InputIter2,class OutputIter>constexpr OutputIter set_union(InputIter1 first1, InputIter1 last1,                                   InputIter2 first2, InputIter2 last2,                                   OutputIter result);template<class InputIter1,class InputIter2,class OutputIter,class Compare>constexpr OutputIter set_union(InputIter1 first1, InputIter1 last1,                                   InputIter2 first2, InputIter2 last2,                                   OutputIter result, Compare comp);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter>    ForwardIter set_union(ExecutionPolicy&& exec,// freestanding-deleted                          ForwardIter1 first1, ForwardIter1 last1,                          ForwardIter2 first2, ForwardIter2 last2,                          ForwardIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter,class Compare>    ForwardIter set_union(ExecutionPolicy&& exec,// freestanding-deleted                          ForwardIter1 first1, ForwardIter1 last1,                          ForwardIter2 first2, ForwardIter2 last2,                          ForwardIter result, Compare comp); namespace ranges{template<class I1,class I2,class O>using set_union_result= in_in_out_result<I1, I2, O>; template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<I1, I2, O, Comp, Proj1, Proj2>constexpr set_union_result<I1, I2, O>        set_union(I1 first1, S1 last1, I2 first2, S2 last2, O result, Comp comp={},                  Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<iterator_t<R1>, iterator_t<R2>, O, Comp, Proj1, Proj2>constexpr set_union_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>, O>        set_union(R1&& r1, R2&& r2, O result, Comp comp={},                  Proj1 proj1={}, Proj2 proj2={});} template<class InputIter1,class InputIter2,class OutputIter>constexpr OutputIter set_intersection(InputIter1 first1, InputIter1 last1,                                          InputIter2 first2, InputIter2 last2,                                          OutputIter result);template<class InputIter1,class InputIter2,class OutputIter,class Compare>constexpr OutputIter set_intersection(InputIter1 first1, InputIter1 last1,                                          InputIter2 first2, InputIter2 last2,                                          OutputIter result, Compare comp);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter>    ForwardIter set_intersection(ExecutionPolicy&& exec,// freestanding-deleted                                 ForwardIter1 first1, ForwardIter1 last1,                                 ForwardIter2 first2, ForwardIter2 last2,                                 ForwardIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter,class Compare>    ForwardIter set_intersection(ExecutionPolicy&& exec,// freestanding-deleted                                 ForwardIter1 first1, ForwardIter1 last1,                                 ForwardIter2 first2, ForwardIter2 last2,                                 ForwardIter result, Compare comp); namespace ranges{template<class I1,class I2,class O>using set_intersection_result= in_in_out_result<I1, I2, O>; template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<I1, I2, O, Comp, Proj1, Proj2>constexpr set_intersection_result<I1, I2, O>        set_intersection(I1 first1, S1 last1, I2 first2, S2 last2, O result,                         Comp comp={}, Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<iterator_t<R1>, iterator_t<R2>, O, Comp, Proj1, Proj2>constexpr set_intersection_result<borrowed_iterator_t<R1>,                                        borrowed_iterator_t<R2>, O>        set_intersection(R1&& r1, R2&& r2, O result,                         Comp comp={}, Proj1 proj1={}, Proj2 proj2={});} template<class InputIter1,class InputIter2,class OutputIter>constexpr OutputIter set_difference(InputIter1 first1, InputIter1 last1,                                        InputIter2 first2, InputIter2 last2,                                        OutputIter result);template<class InputIter1,class InputIter2,class OutputIter,class Compare>constexpr OutputIter set_difference(InputIter1 first1, InputIter1 last1,                                        InputIter2 first2, InputIter2 last2,                                        OutputIter result, Compare comp);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter>    ForwardIter set_difference(ExecutionPolicy&& exec,// freestanding-deleted                               ForwardIter1 first1, ForwardIter1 last1,                               ForwardIter2 first2, ForwardIter2 last2,                               ForwardIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter,class Compare>    ForwardIter set_difference(ExecutionPolicy&& exec,// freestanding-deleted                               ForwardIter1 first1, ForwardIter1 last1,                               ForwardIter2 first2, ForwardIter2 last2,                               ForwardIter result, Compare comp); namespace ranges{template<class I,class O>using set_difference_result= in_out_result<I, O>; template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<I1, I2, O, Comp, Proj1, Proj2>constexpr set_difference_result<I1, O>        set_difference(I1 first1, S1 last1, I2 first2, S2 last2, O result,                       Comp comp={}, Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<iterator_t<R1>, iterator_t<R2>, O, Comp, Proj1, Proj2>constexpr set_difference_result<borrowed_iterator_t<R1>, O>        set_difference(R1&& r1, R2&& r2, O result,                       Comp comp={}, Proj1 proj1={}, Proj2 proj2={});} template<class InputIter1,class InputIter2,class OutputIter>constexpr OutputIter set_symmetric_difference(InputIter1 first1, InputIter1 last1,                                                  InputIter2 first2, InputIter2 last2,                                                  OutputIter result);template<class InputIter1,class InputIter2,class OutputIter,class Compare>constexpr OutputIter set_symmetric_difference(InputIter1 first1, InputIter1 last1,                                                  InputIter2 first2, InputIter2 last2,                                                  OutputIter result, Compare comp);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter>    ForwardIter set_symmetric_difference(ExecutionPolicy&& exec,// freestanding-deleted                                         ForwardIter1 first1, ForwardIter1 last1,                                         ForwardIter2 first2, ForwardIter2 last2,                                         ForwardIter result);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class ForwardIter,class Compare>    ForwardIter set_symmetric_difference(ExecutionPolicy&& exec,// freestanding-deleted                                         ForwardIter1 first1, ForwardIter1 last1,                                         ForwardIter2 first2, ForwardIter2 last2,                                         ForwardIter result, Compare comp); namespace ranges{template<class I1,class I2,class O>using set_symmetric_difference_result= in_in_out_result<I1, I2, O>; template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<I1, I2, O, Comp, Proj1, Proj2>constexpr set_symmetric_difference_result<I1, I2, O>        set_symmetric_difference(I1 first1, S1 last1, I2 first2, S2 last2, O result,                                 Comp comp={}, Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2, weakly_incrementable O,class Comp=ranges::less,class Proj1= identity,class Proj2= identity>      requires mergeable<iterator_t<R1>, iterator_t<R2>, O, Comp, Proj1, Proj2>constexpr set_symmetric_difference_result<borrowed_iterator_t<R1>,                                                borrowed_iterator_t<R2>, O>        set_symmetric_difference(R1&& r1, R2&& r2, O result, Comp comp={},                                 Proj1 proj1={}, Proj2 proj2={});} // heap operationstemplate<class RandomAccessIter>constexprvoid push_heap(RandomAccessIter first, RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprvoid push_heap(RandomAccessIter first, RandomAccessIter last,                             Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr I push_heap(I first, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr borrowed_iterator_t<R> push_heap(R&& r, Comp comp={}, Proj proj={});} template<class RandomAccessIter>constexprvoid pop_heap(RandomAccessIter first, RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprvoid pop_heap(RandomAccessIter first, RandomAccessIter last,                            Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr I pop_heap(I first, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr borrowed_iterator_t<R> pop_heap(R&& r, Comp comp={}, Proj proj={});} template<class RandomAccessIter>constexprvoid make_heap(RandomAccessIter first, RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprvoid make_heap(RandomAccessIter first, RandomAccessIter last,                             Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr I make_heap(I first, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr borrowed_iterator_t<R> make_heap(R&& r, Comp comp={}, Proj proj={});} template<class RandomAccessIter>constexprvoid sort_heap(RandomAccessIter first, RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprvoid sort_heap(RandomAccessIter first, RandomAccessIter last,                             Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr I sort_heap(I first, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr borrowed_iterator_t<R> sort_heap(R&& r, Comp comp={}, Proj proj={});} template<class RandomAccessIter>constexprbool is_heap(RandomAccessIter first, RandomAccessIter last);template<class RandomAccessIter,class Compare>constexprbool is_heap(RandomAccessIter first, RandomAccessIter last,                           Compare comp);template<class ExecutionPolicy,class RandomAccessIter>bool is_heap(ExecutionPolicy&& exec,// freestanding-deleted                 RandomAccessIter first, RandomAccessIter last);template<class ExecutionPolicy,class RandomAccessIter,class Compare>bool is_heap(ExecutionPolicy&& exec,// freestanding-deleted                 RandomAccessIter first, RandomAccessIter last, Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_strict_weak_order<projected<I, Proj>> Comp=ranges::less>constexprbool is_heap(I first, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>constexprbool is_heap(R&& r, Comp comp={}, Proj proj={});} template<class RandomAccessIter>constexpr RandomAccessIter      is_heap_until(RandomAccessIter first, RandomAccessIter last);template<class RandomAccessIter,class Compare>constexpr RandomAccessIter      is_heap_until(RandomAccessIter first, RandomAccessIter last, Compare comp);template<class ExecutionPolicy,class RandomAccessIter>    RandomAccessIter      is_heap_until(ExecutionPolicy&& exec,// freestanding-deleted                    RandomAccessIter first, RandomAccessIter last);template<class ExecutionPolicy,class RandomAccessIter,class Compare>    RandomAccessIter      is_heap_until(ExecutionPolicy&& exec,// freestanding-deleted                    RandomAccessIter first, RandomAccessIter last, Compare comp); namespace ranges{template<random_access_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_strict_weak_order<projected<I, Proj>> Comp=ranges::less>constexpr I is_heap_until(I first, S last, Comp comp={}, Proj proj={});template<random_access_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr borrowed_iterator_t<R>        is_heap_until(R&& r, Comp comp={}, Proj proj={});} // minimum and maximumtemplate<class T>constexprconst T& min(const T& a,const T& b);template<class T,class Compare>constexprconst T& min(const T& a,const T& b, Compare comp);template<class T>constexpr T min(initializer_list<T> t);template<class T,class Compare>constexpr T min(initializer_list<T> t, Compare comp); namespace ranges{template<class T,class Proj= identity,             indirect_strict_weak_order<projected<const T*, Proj>> Comp=ranges::less>constexprconst T& min(const T& a,const T& b, Comp comp={}, Proj proj={});template<copyable T,class Proj= identity,             indirect_strict_weak_order<projected<const T*, Proj>> Comp=ranges::less>constexpr T min(initializer_list<T> r, Comp comp={}, Proj proj={});template<input_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>      requires indirectly_copyable_storable<iterator_t<R>, range_value_t<R>*>constexpr range_value_t<R> min(R&& r, Comp comp={}, Proj proj={});} template<class T>constexprconst T& max(const T& a,const T& b);template<class T,class Compare>constexprconst T& max(const T& a,const T& b, Compare comp);template<class T>constexpr T max(initializer_list<T> t);template<class T,class Compare>constexpr T max(initializer_list<T> t, Compare comp); namespace ranges{template<class T,class Proj= identity,             indirect_strict_weak_order<projected<const T*, Proj>> Comp=ranges::less>constexprconst T& max(const T& a,const T& b, Comp comp={}, Proj proj={});template<copyable T,class Proj= identity,             indirect_strict_weak_order<projected<const T*, Proj>> Comp=ranges::less>constexpr T max(initializer_list<T> r, Comp comp={}, Proj proj={});template<input_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>      requires indirectly_copyable_storable<iterator_t<R>, range_value_t<R>*>constexpr range_value_t<R> max(R&& r, Comp comp={}, Proj proj={});} template<class T>constexpr pair<const T&,const T&> minmax(const T& a,const T& b);template<class T,class Compare>constexpr pair<const T&,const T&> minmax(const T& a,const T& b, Compare comp);template<class T>constexpr pair<T, T> minmax(initializer_list<T> t);template<class T,class Compare>constexpr pair<T, T> minmax(initializer_list<T> t, Compare comp); namespace ranges{template<class T>using minmax_result= min_max_result<T>; template<class T,class Proj= identity,             indirect_strict_weak_order<projected<const T*, Proj>> Comp=ranges::less>constexpr minmax_result<const T&>        minmax(const T& a,const T& b, Comp comp={}, Proj proj={});template<copyable T,class Proj= identity,             indirect_strict_weak_order<projected<const T*, Proj>> Comp=ranges::less>constexpr minmax_result<T>        minmax(initializer_list<T> r, Comp comp={}, Proj proj={});template<input_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>      requires indirectly_copyable_storable<iterator_t<R>, range_value_t<R>*>constexpr minmax_result<range_value_t<R>>        minmax(R&& r, Comp comp={}, Proj proj={});} template<class ForwardIter>constexpr ForwardIter min_element(ForwardIter first, ForwardIter last);template<class ForwardIter,class Compare>constexpr ForwardIter min_element(ForwardIter first, ForwardIter last,                                      Compare comp);template<class ExecutionPolicy,class ForwardIter>    ForwardIter min_element(ExecutionPolicy&& exec,// freestanding-deleted                            ForwardIter first, ForwardIter last);template<class ExecutionPolicy,class ForwardIter,class Compare>    ForwardIter min_element(ExecutionPolicy&& exec,// freestanding-deleted                            ForwardIter first, ForwardIter last,                            Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_strict_weak_order<projected<I, Proj>> Comp=ranges::less>constexpr I min_element(I first, S last, Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr borrowed_iterator_t<R>        min_element(R&& r, Comp comp={}, Proj proj={});} template<class ForwardIter>constexpr ForwardIter max_element(ForwardIter first, ForwardIter last);template<class ForwardIter,class Compare>constexpr ForwardIter max_element(ForwardIter first, ForwardIter last,                                      Compare comp);template<class ExecutionPolicy,class ForwardIter>    ForwardIter max_element(ExecutionPolicy&& exec,// freestanding-deleted                            ForwardIter first, ForwardIter last);template<class ExecutionPolicy,class ForwardIter,class Compare>    ForwardIter max_element(ExecutionPolicy&& exec,// freestanding-deleted                            ForwardIter first, ForwardIter last,                            Compare comp); namespace ranges{template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_strict_weak_order<projected<I, Proj>> Comp=ranges::less>constexpr I max_element(I first, S last, Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr borrowed_iterator_t<R>        max_element(R&& r, Comp comp={}, Proj proj={});} template<class ForwardIter>constexpr pair<ForwardIter, ForwardIter>      minmax_element(ForwardIter first, ForwardIter last);template<class ForwardIter,class Compare>constexpr pair<ForwardIter, ForwardIter>      minmax_element(ForwardIter first, ForwardIter last, Compare comp);template<class ExecutionPolicy,class ForwardIter>    pair<ForwardIter, ForwardIter>      minmax_element(ExecutionPolicy&& exec,// freestanding-deleted                     ForwardIter first, ForwardIter last);template<class ExecutionPolicy,class ForwardIter,class Compare>    pair<ForwardIter, ForwardIter>      minmax_element(ExecutionPolicy&& exec,// freestanding-deleted                     ForwardIter first, ForwardIter last, Compare comp); namespace ranges{template<class I>using minmax_element_result= min_max_result<I>; template<forward_iterator I, sentinel_for<I> S,class Proj= identity,             indirect_strict_weak_order<projected<I, Proj>> Comp=ranges::less>constexpr minmax_element_result<I>        minmax_element(I first, S last, Comp comp={}, Proj proj={});template<forward_range R,class Proj= identity,             indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp=ranges::less>constexpr minmax_element_result<borrowed_iterator_t<R>>        minmax_element(R&& r, Comp comp={}, Proj proj={});} // bounded valuetemplate<class T>constexprconst T& clamp(const T& v,const T& lo,const T& hi);template<class T,class Compare>constexprconst T& clamp(const T& v,const T& lo,const T& hi, Compare comp); namespace ranges{template<class T,class Proj= identity,             indirect_strict_weak_order<projected<const T*, Proj>> Comp=ranges::less>constexprconst T&        clamp(const T& v,const T& lo,const T& hi, Comp comp={}, Proj proj={});} // lexicographical comparisontemplate<class InputIter1,class InputIter2>constexprbool lexicographical_compare(InputIter1 first1, InputIter1 last1,                                           InputIter2 first2, InputIter2 last2);template<class InputIter1,class InputIter2,class Compare>constexprbool lexicographical_compare(InputIter1 first1, InputIter1 last1,                                           InputIter2 first2, InputIter2 last2,                                           Compare comp);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2>bool lexicographical_compare(ExecutionPolicy&& exec,// freestanding-deleted                                 ForwardIter1 first1, ForwardIter1 last1,                                 ForwardIter2 first2, ForwardIter2 last2);template<class ExecutionPolicy,class ForwardIter1,class ForwardIter2,class Compare>bool lexicographical_compare(ExecutionPolicy&& exec,// freestanding-deleted                                 ForwardIter1 first1, ForwardIter1 last1,                                 ForwardIter2 first2, ForwardIter2 last2,                                 Compare comp); namespace ranges{template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2,             sentinel_for<I2> S2,class Proj1= identity,class Proj2= identity,             indirect_strict_weak_order<projected<I1, Proj1>,projected<I2, Proj2>> Comp=ranges::less>constexprbool        lexicographical_compare(I1 first1, S1 last1, I2 first2, S2 last2,                                Comp comp={}, Proj1 proj1={}, Proj2 proj2={});template<input_range R1, input_range R2,class Proj1= identity,class Proj2= identity,             indirect_strict_weak_order<projected<iterator_t<R1>, Proj1>,projected<iterator_t<R2>, Proj2>> Comp=ranges::less>constexprbool        lexicographical_compare(R1&& r1, R2&& r2, Comp comp={},                                Proj1 proj1={}, Proj2 proj2={});} // three-way comparison algorithmstemplate<class InputIter1,class InputIter2,class Cmp>constexprauto lexicographical_compare_three_way(InputIter1 b1, InputIter1 e1,                                                     InputIter2 b2, InputIter2 e2,                                                     Cmp comp)-> decltype(comp(*b1,*b2));template<class InputIter1,class InputIter2>constexprauto lexicographical_compare_three_way(InputIter1 b1, InputIter1 e1,                                                     InputIter2 b2, InputIter2 e2); // permutationstemplate<class BidirectionalIter>constexprbool next_permutation(BidirectionalIter first,                                    BidirectionalIter last);template<class BidirectionalIter,class Compare>constexprbool next_permutation(BidirectionalIter first,                                    BidirectionalIter last, Compare comp); namespace ranges{template<class I>using next_permutation_result= in_found_result<I>; template<bidirectional_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr next_permutation_result<I>        next_permutation(I first, S last, Comp comp={}, Proj proj={});template<bidirectional_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr next_permutation_result<borrowed_iterator_t<R>>        next_permutation(R&& r, Comp comp={}, Proj proj={});} template<class BidirectionalIter>constexprbool prev_permutation(BidirectionalIter first,                                    BidirectionalIter last);template<class BidirectionalIter,class Compare>constexprbool prev_permutation(BidirectionalIter first,                                    BidirectionalIter last, Compare comp); namespace ranges{template<class I>using prev_permutation_result= in_found_result<I>; template<bidirectional_iterator I, sentinel_for<I> S,class Comp=ranges::less,class Proj= identity>      requires sortable<I, Comp, Proj>constexpr prev_permutation_result<I>        prev_permutation(I first, S last, Comp comp={}, Proj proj={});template<bidirectional_range R,class Comp=ranges::less,class Proj= identity>      requires sortable<iterator_t<R>, Comp, Proj>constexpr prev_permutation_result<borrowed_iterator_t<R>>        prev_permutation(R&& r, Comp comp={}, Proj proj={});}}

      [edit]Class templatestd::ranges::in_fun_result

      namespace std::ranges{template<class I,class F>struct in_fun_result{[[no_unique_address]] I in;[[no_unique_address]] F fun; template<class I2,class F2>      requires convertible_to<const I&, I2>&& convertible_to<const F&, F2>constexpr operator in_fun_result<I2, F2>()const&{return{in, fun};} template<class I2,class F2>      requires convertible_to<I, I2>&& convertible_to<F, F2>constexpr operator in_fun_result<I2, F2>()&&{return{std::move(in), std::move(fun)};}};}

      [edit]Class templatestd::ranges::in_in_result

      namespace std::ranges{template<class I1,class I2>struct in_in_result{[[no_unique_address]] I1 in1;[[no_unique_address]] I2 in2; template<class II1,class II2>      requires convertible_to<const I1&, II1>&& convertible_to<const I2&, II2>constexpr operator in_in_result<II1, II2>()const&{return{in1, in2};} template<class II1,class II2>      requires convertible_to<I1, II1>&& convertible_to<I2, II2>constexpr operator in_in_result<II1, II2>()&&{return{std::move(in1), std::move(in2)};}};}

      [edit]Class templatestd::ranges::in_out_result

      namespace std::ranges{template<class I,class O>struct in_out_result{[[no_unique_address]] I in;[[no_unique_address]] O out; template<class I2,class O2>      requires convertible_to<const I&, I2>&& convertible_to<const O&, O2>constexpr operator in_out_result<I2, O2>()const&{return{in, out};} template<class I2,class O2>      requires convertible_to<I, I2>&& convertible_to<O, O2>constexpr operator in_out_result<I2, O2>()&&{return{std::move(in), std::move(out)};}};}

      [edit]Class templatestd::ranges::in_in_out_result

      namespace std::ranges{template<class I1,class I2,class O>struct in_in_out_result{[[no_unique_address]] I1 in1;[[no_unique_address]] I2 in2;[[no_unique_address]] O  out; template<class II1,class II2,class OO>      requires convertible_to<const I1&, II1>&&               convertible_to<const I2&, II2>&&               convertible_to<const O&, OO>constexpr operator in_in_out_result<II1, II2, OO>()const&{return{in1, in2, out};} template<class II1,class II2,class OO>      requires convertible_to<I1, II1>&&               convertible_to<I2, II2>&&               convertible_to<O, OO>constexpr operator in_in_out_result<II1, II2, OO>()&&{return{std::move(in1), std::move(in2), std::move(out)};}};}

      [edit]Class templatestd::ranges::in_out_out_result

      namespace std::ranges{template<class I,class O1,class O2>struct in_out_out_result{[[no_unique_address]] I  in;[[no_unique_address]] O1 out1;[[no_unique_address]] O2 out2; template<class II,class OO1,class OO2>      requires convertible_to<const I&, II>&&               convertible_to<const O1&, OO1>&&               convertible_to<const O2&, OO2>constexpr operator in_out_out_result<II, OO1, OO2>()const&{return{in, out1, out2};} template<class II,class OO1,class OO2>      requires convertible_to<I, II>&&               convertible_to<O1, OO1>&&               convertible_to<O2, OO2>constexpr operator in_out_out_result<II, OO1, OO2>()&&{return{std::move(in), std::move(out1), std::move(out2)};}};}

      [edit]Class templatestd::ranges::min_max_result

      namespace std::ranges{template<class T>struct min_max_result{[[no_unique_address]] T min;[[no_unique_address]] T max; template<class T2>      requires convertible_to<const T&, T2>constexpr operator min_max_result<T2>()const&{return{min, max};} template<class T2>      requires convertible_to<T, T2>constexpr operator min_max_result<T2>()&&{return{std::move(min), std::move(max)};}};}

      [edit]Class templatestd::ranges::in_found_result

      namespace std::ranges{template<class I>struct in_found_result{[[no_unique_address]] I in;bool found; template<class I2>      requires convertible_to<const I&, I2>constexpr operator in_found_result<I2>()const&{return{in, found};}template<class I2>      requires convertible_to<I, I2>constexpr operator in_found_result<I2>()&&{return{std::move(in), found};}};}

      [edit]Class templatestd::ranges::in_value_result

      namespace std::ranges{template<class I,class T>struct in_value_result{[[no_unique_address]] I in;[[no_unique_address]] T value; template<class I2,class T2>      requires convertible_to<const I&, I2>&& convertible_to<const T&, T2>constexpr operator in_value_result<I2, T2>()const&{return{in, value};} template<class I2,class T2>      requires convertible_to<I, I2>&& convertible_to<T, T2>constexpr operator in_value_result<I2, T2>()&&{return{std::move(in), std::move(value)};}};}

      [edit]Class templatestd::ranges::out_value_result

      namespace std::ranges{template<class O,class T>struct out_value_result{[[no_unique_address]] O out;[[no_unique_address]] T value; template<class O2,class T2>      requires convertible_to<const O&, O2>&& convertible_to<const T&, T2>constexpr operator out_value_result<O2, T2>()const&{return{out, value};} template<class O2,class T2>      requires convertible_to<O, O2>&& convertible_to<T, T2>constexpr operator out_value_result<O2, T2>()&&{return{std::move(out), std::move(value)};}};}
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/header/algorithm&oldid=163909"

      [8]ページ先頭

      ©2009-2025 Movatter.jp