diff options
| author | mikhnenko <[email protected]> | 2023-10-14 13:00:57 +0300 |
|---|---|---|
| committer | mikhnenko <[email protected]> | 2023-10-14 13:22:30 +0300 |
| commit | 4371a757495f375ca7c5b1730f4e9f741a71ec40 (patch) | |
| tree | be8f3405e7b0534d29bfb8eec493c0dbe108adc5 /contrib/libs/cxxsupp/libcxx/include/algorithm | |
| parent | ecb10029a72bb21f92858ff3c0d76c8f255cf4ba (diff) | |
Update libc++ to 1 May 2022 639b9618f46d75f4dabd2082b3f6ba8433c287bf
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/include/algorithm')
| -rw-r--r-- | contrib/libs/cxxsupp/libcxx/include/algorithm | 80 |
1 files changed, 79 insertions, 1 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/algorithm b/contrib/libs/cxxsupp/libcxx/include/algorithm index 0589f5dcec4..a86e4664502 100644 --- a/contrib/libs/cxxsupp/libcxx/include/algorithm +++ b/contrib/libs/cxxsupp/libcxx/include/algorithm @@ -165,6 +165,79 @@ namespace ranges { indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred> constexpr range_difference_t<R> count_if(R&& r, Pred pred, Proj proj = {}); // since C++20 + + template<class T, class Proj = identity, + indirect_strict_weak_order<projected<const T*, Proj>> Comp = ranges::less> + constexpr ranges::minmax_result<const T&> + minmax(const T& a, const T& b, Comp comp = {}, Proj proj = {}); // since C++20 + + template<copyable T, class Proj = identity, + indirect_strict_weak_order<projected<const T*, Proj>> Comp = ranges::less> + constexpr ranges::minmax_result<T> + minmax(initializer_list<T> r, Comp comp = {}, Proj proj = {}); // since C++20 + + 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 ranges::minmax_result<range_value_t<R>> + minmax(R&& r, Comp comp = {}, Proj proj = {}); // since C++20 + + template<forward_iterator I, sentinel_for<I> S, class Proj = identity, + indirect_strict_weak_order<projected<I, Proj>> Comp = ranges::less> + constexpr ranges::minmax_element_result<I> + minmax_element(I first, S last, Comp comp = {}, Proj proj = {}); // since C++20 + + template<forward_range R, class Proj = identity, + indirect_strict_weak_order<projected<iterator_t<R>, Proj>> Comp = ranges::less> + constexpr ranges::minmax_element_result<borrowed_iterator_t<R>> + minmax_element(R&& r, Comp comp = {}, Proj proj = {}); // since C++20 + + template<class I, class O> + using copy_result = in_out_result<I, O>; // since C++20 + + template<class I, class O> + using copy_n_result = in_out_result<I, O>; // since C++20 + + template<class I, class O> + using copy_if_result = in_out_result<I, O>; // since C++20 + + template<class I1, class I2> + using copy_backward_result = in_out_result<I1, I2>; // since C++20 + + template<input_iterator I, sentinel_for<I> S, weakly_incrementable O> + requires indirectly_copyable<I, O> + constexpr ranges::copy_result<I, O> ranges::copy(I first, S last, O result); // since C++20 + + template<input_range R, weakly_incrementable O> + requires indirectly_copyable<iterator_t<R>, O> + constexpr ranges::copy_result<borrowed_iterator_t<R>, O> ranges::copy(R&& r, O result); // since C++20 + + template<input_iterator I, weakly_incrementable O> + requires indirectly_copyable<I, O> + constexpr ranges::copy_n_result<I, O> + ranges::copy_n(I first, iter_difference_t<I> n, O result); // since C++20 + + 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 ranges::copy_if_result<I, O> + ranges::copy_if(I first, S last, O result, Pred pred, Proj proj = {}); // since C++20 + + 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 ranges::copy_if_result<borrowed_iterator_t<R>, O> + ranges::copy_if(R&& r, O result, Pred pred, Proj proj = {}); // since C++20 + + template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2> + requires indirectly_copyable<I1, I2> + constexpr ranges::copy_backward_result<I1, I2> + ranges::copy_backward(I1 first, S1 last, I2 result); // since C++20 + + template<bidirectional_range R, bidirectional_iterator I> + requires indirectly_copyable<iterator_t<R>, I> + constexpr ranges::copy_backward_result<borrowed_iterator_t<R>, I> + ranges::copy_backward(R&& r, I result); // since C++20 } constexpr bool // constexpr in C++20 @@ -808,7 +881,6 @@ template <class BidirectionalIterator, class Compare> #include <__debug> #include <cstddef> #include <cstring> -#include <functional> #include <initializer_list> #include <iterator> #include <memory> @@ -882,6 +954,10 @@ template <class BidirectionalIterator, class Compare> #include <__algorithm/pop_heap.h> #include <__algorithm/prev_permutation.h> #include <__algorithm/push_heap.h> +#include <__algorithm/ranges_copy.h> +#include <__algorithm/ranges_copy_backward.h> +#include <__algorithm/ranges_copy_if.h> +#include <__algorithm/ranges_copy_n.h> #include <__algorithm/ranges_count.h> #include <__algorithm/ranges_count_if.h> #include <__algorithm/ranges_find.h> @@ -891,6 +967,8 @@ template <class BidirectionalIterator, class Compare> #include <__algorithm/ranges_max_element.h> #include <__algorithm/ranges_min.h> #include <__algorithm/ranges_min_element.h> +#include <__algorithm/ranges_minmax.h> +#include <__algorithm/ranges_minmax_element.h> #include <__algorithm/ranges_mismatch.h> #include <__algorithm/ranges_swap_ranges.h> #include <__algorithm/ranges_transform.h> |
