xref: /freebsd/contrib/llvm-project/libcxx/modules/std/algorithm.inc (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
15f757f3fSDimitry Andric// -*- C++ -*-
25f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
35f757f3fSDimitry Andric//
45f757f3fSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
55f757f3fSDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
65f757f3fSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
75f757f3fSDimitry Andric//
85f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
95f757f3fSDimitry Andric
105f757f3fSDimitry Andricexport namespace std {
115f757f3fSDimitry Andric  namespace ranges {
125f757f3fSDimitry Andric    // [algorithms.results], algorithm result types
135f757f3fSDimitry Andric    using std::ranges::in_found_result;
145f757f3fSDimitry Andric    using std::ranges::in_fun_result;
155f757f3fSDimitry Andric    using std::ranges::in_in_out_result;
165f757f3fSDimitry Andric    using std::ranges::in_in_result;
175f757f3fSDimitry Andric    using std::ranges::in_out_out_result;
185f757f3fSDimitry Andric    using std::ranges::in_out_result;
19cb14a3feSDimitry Andric#if _LIBCPP_STD_VER >= 23
20cb14a3feSDimitry Andric    using std::ranges::in_value_result;
21cb14a3feSDimitry Andric#endif
225f757f3fSDimitry Andric    using std::ranges::min_max_result;
235f757f3fSDimitry Andric    // using std::ranges::out_value_result;
245f757f3fSDimitry Andric  } // namespace ranges
255f757f3fSDimitry Andric
265f757f3fSDimitry Andric  // [alg.nonmodifying], non-modifying sequence operations
275f757f3fSDimitry Andric  // [alg.all.of], all of
285f757f3fSDimitry Andric  using std::all_of;
295f757f3fSDimitry Andric  namespace ranges {
305f757f3fSDimitry Andric    using std::ranges::all_of;
315f757f3fSDimitry Andric  }
325f757f3fSDimitry Andric
335f757f3fSDimitry Andric  // [alg.any.of], any of
345f757f3fSDimitry Andric  using std::any_of;
355f757f3fSDimitry Andric  namespace ranges {
365f757f3fSDimitry Andric    using std::ranges::any_of;
375f757f3fSDimitry Andric  }
385f757f3fSDimitry Andric
395f757f3fSDimitry Andric  // [alg.none.of], none of
405f757f3fSDimitry Andric  using std::none_of;
415f757f3fSDimitry Andric  namespace ranges {
425f757f3fSDimitry Andric    using std::ranges::none_of;
435f757f3fSDimitry Andric  }
445f757f3fSDimitry Andric
45cb14a3feSDimitry Andric#if _LIBCPP_STD_VER >= 23
465f757f3fSDimitry Andric  // [alg.contains], contains
475f757f3fSDimitry Andric  namespace ranges {
485f757f3fSDimitry Andric    using std::ranges::contains;
495f757f3fSDimitry Andric    using std::ranges::contains_subrange;
50cb14a3feSDimitry Andric  } // namespace ranges
51cb14a3feSDimitry Andric#endif // _LIBCPP_STD_VER >= 23
525f757f3fSDimitry Andric
535f757f3fSDimitry Andric  // [alg.foreach], for each
545f757f3fSDimitry Andric  using std::for_each;
555f757f3fSDimitry Andric
565f757f3fSDimitry Andric  namespace ranges {
575f757f3fSDimitry Andric    using std::ranges::for_each;
585f757f3fSDimitry Andric    using std::ranges::for_each_result;
595f757f3fSDimitry Andric  } // namespace ranges
605f757f3fSDimitry Andric
615f757f3fSDimitry Andric  using std::for_each_n;
625f757f3fSDimitry Andric
635f757f3fSDimitry Andric  namespace ranges {
645f757f3fSDimitry Andric    using std::ranges::for_each_n_result;
655f757f3fSDimitry Andric
665f757f3fSDimitry Andric    using std::ranges::for_each_n;
675f757f3fSDimitry Andric  } // namespace ranges
685f757f3fSDimitry Andric
695f757f3fSDimitry Andric  // [alg.find], find
705f757f3fSDimitry Andric  using std::find;
715f757f3fSDimitry Andric  using std::find_if;
725f757f3fSDimitry Andric  using std::find_if_not;
735f757f3fSDimitry Andric
745f757f3fSDimitry Andric  namespace ranges {
755f757f3fSDimitry Andric    using std::ranges::find;
765f757f3fSDimitry Andric    using std::ranges::find_if;
775f757f3fSDimitry Andric    using std::ranges::find_if_not;
785f757f3fSDimitry Andric  } // namespace ranges
795f757f3fSDimitry Andric
80*0fca6ea1SDimitry Andric#if _LIBCPP_STD_VER >= 23
81*0fca6ea1SDimitry Andric  // [alg.find.last], find last
825f757f3fSDimitry Andric  namespace ranges {
835f757f3fSDimitry Andric    using std::ranges::find_last;
845f757f3fSDimitry Andric    using std::ranges::find_last_if;
855f757f3fSDimitry Andric    using std::ranges::find_last_if_not;
865f757f3fSDimitry Andric  } // namespace ranges
87*0fca6ea1SDimitry Andric#endif
885f757f3fSDimitry Andric
895f757f3fSDimitry Andric  // [alg.find.end], find end
905f757f3fSDimitry Andric  using std::find_end;
915f757f3fSDimitry Andric
925f757f3fSDimitry Andric  namespace ranges {
935f757f3fSDimitry Andric    using std::ranges::find_end;
945f757f3fSDimitry Andric  }
955f757f3fSDimitry Andric
965f757f3fSDimitry Andric  // [alg.find.first.of], find first
975f757f3fSDimitry Andric  using std::find_first_of;
985f757f3fSDimitry Andric
995f757f3fSDimitry Andric  namespace ranges {
1005f757f3fSDimitry Andric    using std::ranges::find_first_of;
1015f757f3fSDimitry Andric  }
1025f757f3fSDimitry Andric
1035f757f3fSDimitry Andric  // [alg.adjacent.find], adjacent find
1045f757f3fSDimitry Andric  using std::adjacent_find;
1055f757f3fSDimitry Andric
1065f757f3fSDimitry Andric  namespace ranges {
1075f757f3fSDimitry Andric    using std::ranges::adjacent_find;
1085f757f3fSDimitry Andric  }
1095f757f3fSDimitry Andric
1105f757f3fSDimitry Andric  // [alg.count], count
1115f757f3fSDimitry Andric  using std::count;
1125f757f3fSDimitry Andric  using std::count_if;
1135f757f3fSDimitry Andric
1145f757f3fSDimitry Andric  namespace ranges {
1155f757f3fSDimitry Andric    using std::ranges::count;
1165f757f3fSDimitry Andric    using std::ranges::count_if;
1175f757f3fSDimitry Andric  } // namespace ranges
1185f757f3fSDimitry Andric
1195f757f3fSDimitry Andric  // [mismatch], mismatch
1205f757f3fSDimitry Andric  using std::mismatch;
1215f757f3fSDimitry Andric
1225f757f3fSDimitry Andric  namespace ranges {
1235f757f3fSDimitry Andric    using std::ranges::mismatch_result;
1245f757f3fSDimitry Andric
1255f757f3fSDimitry Andric    using std::ranges::mismatch;
1265f757f3fSDimitry Andric  } // namespace ranges
1275f757f3fSDimitry Andric
1285f757f3fSDimitry Andric  // [alg.equal], equal
1295f757f3fSDimitry Andric  using std::equal;
1305f757f3fSDimitry Andric
1315f757f3fSDimitry Andric  namespace ranges {
1325f757f3fSDimitry Andric    using std::ranges::equal;
1335f757f3fSDimitry Andric  }
1345f757f3fSDimitry Andric
1355f757f3fSDimitry Andric  // [alg.is.permutation], is permutation
1365f757f3fSDimitry Andric  using std::is_permutation;
1375f757f3fSDimitry Andric
1385f757f3fSDimitry Andric  namespace ranges {
1395f757f3fSDimitry Andric    using std::ranges::is_permutation;
1405f757f3fSDimitry Andric  }
1415f757f3fSDimitry Andric
1425f757f3fSDimitry Andric  // [alg.search], search
1435f757f3fSDimitry Andric  using std::search;
1445f757f3fSDimitry Andric
1455f757f3fSDimitry Andric  namespace ranges {
1465f757f3fSDimitry Andric    using std::ranges::search;
1475f757f3fSDimitry Andric  }
1485f757f3fSDimitry Andric
1495f757f3fSDimitry Andric  using std::search_n;
1505f757f3fSDimitry Andric
1515f757f3fSDimitry Andric  namespace ranges {
1525f757f3fSDimitry Andric    using std::ranges::search_n;
1535f757f3fSDimitry Andric  }
1545f757f3fSDimitry Andric
1555f757f3fSDimitry Andric  namespace ranges {
1565f757f3fSDimitry Andric#if _LIBCPP_STD_VER >= 23
1575f757f3fSDimitry Andric    // [alg.starts.with], starts with
1585f757f3fSDimitry Andric    using std::ranges::starts_with;
1595f757f3fSDimitry Andric
1605f757f3fSDimitry Andric    // [alg.ends.with], ends with
1615f757f3fSDimitry Andric    using std::ranges::ends_with;
1625f757f3fSDimitry Andric
1635f757f3fSDimitry Andric    // [alg.fold], fold
1645f757f3fSDimitry Andric    using std::ranges::fold_left;
165cb14a3feSDimitry Andric    using std::ranges::fold_left_with_iter;
166cb14a3feSDimitry Andric    using std::ranges::fold_left_with_iter_result;
167cb14a3feSDimitry Andric#  if 0
1685f757f3fSDimitry Andric    using std::ranges::fold_left_first;
1695f757f3fSDimitry Andric    using std::ranges::fold_right;
1705f757f3fSDimitry Andric    using std::ranges::fold_right_last;
1715f757f3fSDimitry Andric    using std::ranges::fold_left_with_iter;
1725f757f3fSDimitry Andric    using std::ranges::fold_left_first_with_iter;
1735f757f3fSDimitry Andric    using std::ranges::fold_left_first_with_iter;
1745f757f3fSDimitry Andric#  endif
1755f757f3fSDimitry Andric#endif // _LIBCPP_STD_VER >= 23
1765f757f3fSDimitry Andric  }    // namespace ranges
1775f757f3fSDimitry Andric
1785f757f3fSDimitry Andric  // [alg.modifying.operations], mutating sequence operations
1795f757f3fSDimitry Andric  // [alg.copy], copy
1805f757f3fSDimitry Andric  using std::copy;
1815f757f3fSDimitry Andric
1825f757f3fSDimitry Andric  namespace ranges {
1835f757f3fSDimitry Andric    using std::ranges::copy;
1845f757f3fSDimitry Andric    using std::ranges::copy_result;
1855f757f3fSDimitry Andric  } // namespace ranges
1865f757f3fSDimitry Andric
1875f757f3fSDimitry Andric  using std::copy_n;
1885f757f3fSDimitry Andric
1895f757f3fSDimitry Andric  namespace ranges {
1905f757f3fSDimitry Andric    using std::ranges::copy_n;
1915f757f3fSDimitry Andric    using std::ranges::copy_n_result;
1925f757f3fSDimitry Andric  } // namespace ranges
1935f757f3fSDimitry Andric
1945f757f3fSDimitry Andric  using std::copy_if;
1955f757f3fSDimitry Andric
1965f757f3fSDimitry Andric  namespace ranges {
1975f757f3fSDimitry Andric    using std::ranges::copy_if;
1985f757f3fSDimitry Andric    using std::ranges::copy_if_result;
1995f757f3fSDimitry Andric  } // namespace ranges
2005f757f3fSDimitry Andric
2015f757f3fSDimitry Andric  using std::copy_backward;
2025f757f3fSDimitry Andric
2035f757f3fSDimitry Andric  namespace ranges {
2045f757f3fSDimitry Andric    using std::ranges::copy_backward;
2055f757f3fSDimitry Andric    using std::ranges::copy_backward_result;
2065f757f3fSDimitry Andric  } // namespace ranges
2075f757f3fSDimitry Andric
2085f757f3fSDimitry Andric  // [alg.move], move
2095f757f3fSDimitry Andric  using std::move;
2105f757f3fSDimitry Andric
2115f757f3fSDimitry Andric  namespace ranges {
2125f757f3fSDimitry Andric    using std::ranges::move;
2135f757f3fSDimitry Andric    using std::ranges::move_result;
2145f757f3fSDimitry Andric  } // namespace ranges
2155f757f3fSDimitry Andric
2165f757f3fSDimitry Andric  using std::move_backward;
2175f757f3fSDimitry Andric
2185f757f3fSDimitry Andric  namespace ranges {
2195f757f3fSDimitry Andric    using std::ranges::move_backward;
2205f757f3fSDimitry Andric    using std::ranges::move_backward_result;
2215f757f3fSDimitry Andric  } // namespace ranges
2225f757f3fSDimitry Andric
2235f757f3fSDimitry Andric  // [alg.swap], swap
2245f757f3fSDimitry Andric  using std::swap_ranges;
2255f757f3fSDimitry Andric
2265f757f3fSDimitry Andric  namespace ranges {
2275f757f3fSDimitry Andric    using std::ranges::swap_ranges;
2285f757f3fSDimitry Andric    using std::ranges::swap_ranges_result;
2295f757f3fSDimitry Andric  } // namespace ranges
2305f757f3fSDimitry Andric
2315f757f3fSDimitry Andric  using std::iter_swap;
2325f757f3fSDimitry Andric
2335f757f3fSDimitry Andric  // [alg.transform], transform
2345f757f3fSDimitry Andric  using std::transform;
2355f757f3fSDimitry Andric
2365f757f3fSDimitry Andric  namespace ranges {
2375f757f3fSDimitry Andric    using std::ranges::binary_transform_result;
2385f757f3fSDimitry Andric    using std::ranges::unary_transform_result;
2395f757f3fSDimitry Andric
2405f757f3fSDimitry Andric    using std::ranges::transform;
2415f757f3fSDimitry Andric
2425f757f3fSDimitry Andric  } // namespace ranges
2435f757f3fSDimitry Andric
2445f757f3fSDimitry Andric  using std::replace;
2455f757f3fSDimitry Andric  using std::replace_if;
2465f757f3fSDimitry Andric
2475f757f3fSDimitry Andric  namespace ranges {
2485f757f3fSDimitry Andric    using std::ranges::replace;
2495f757f3fSDimitry Andric    using std::ranges::replace_if;
2505f757f3fSDimitry Andric  } // namespace ranges
2515f757f3fSDimitry Andric
2525f757f3fSDimitry Andric  using std::replace_copy;
2535f757f3fSDimitry Andric  using std::replace_copy_if;
2545f757f3fSDimitry Andric
2555f757f3fSDimitry Andric  namespace ranges {
2565f757f3fSDimitry Andric    using std::ranges::replace_copy;
2575f757f3fSDimitry Andric    using std::ranges::replace_copy_if;
2585f757f3fSDimitry Andric    using std::ranges::replace_copy_if_result;
2595f757f3fSDimitry Andric    using std::ranges::replace_copy_result;
2605f757f3fSDimitry Andric  } // namespace ranges
2615f757f3fSDimitry Andric
2625f757f3fSDimitry Andric  // [alg.fill], fill
2635f757f3fSDimitry Andric  using std::fill;
2645f757f3fSDimitry Andric  using std::fill_n;
2655f757f3fSDimitry Andric
2665f757f3fSDimitry Andric  namespace ranges {
2675f757f3fSDimitry Andric    using std::ranges::fill;
2685f757f3fSDimitry Andric    using std::ranges::fill_n;
2695f757f3fSDimitry Andric  } // namespace ranges
2705f757f3fSDimitry Andric
2715f757f3fSDimitry Andric  // [alg.generate], generate
2725f757f3fSDimitry Andric  using std::generate;
2735f757f3fSDimitry Andric  using std::generate_n;
2745f757f3fSDimitry Andric
2755f757f3fSDimitry Andric  namespace ranges {
2765f757f3fSDimitry Andric    using std::ranges::generate;
2775f757f3fSDimitry Andric    using std::ranges::generate_n;
2785f757f3fSDimitry Andric  } // namespace ranges
2795f757f3fSDimitry Andric
2805f757f3fSDimitry Andric  // [alg.remove], remove
2815f757f3fSDimitry Andric  using std::remove;
2825f757f3fSDimitry Andric  using std::remove_if;
2835f757f3fSDimitry Andric
2845f757f3fSDimitry Andric  namespace ranges {
2855f757f3fSDimitry Andric    using std::ranges::remove;
2865f757f3fSDimitry Andric    using std::ranges::remove_if;
2875f757f3fSDimitry Andric  } // namespace ranges
2885f757f3fSDimitry Andric
2895f757f3fSDimitry Andric  using std::remove_copy;
2905f757f3fSDimitry Andric  using std::remove_copy_if;
2915f757f3fSDimitry Andric  namespace ranges {
2925f757f3fSDimitry Andric    using std::ranges::remove_copy;
2935f757f3fSDimitry Andric    using std::ranges::remove_copy_if;
2945f757f3fSDimitry Andric    using std::ranges::remove_copy_if_result;
2955f757f3fSDimitry Andric    using std::ranges::remove_copy_result;
2965f757f3fSDimitry Andric  } // namespace ranges
2975f757f3fSDimitry Andric
2985f757f3fSDimitry Andric  // [alg.unique], unique
2995f757f3fSDimitry Andric  using std::unique;
3005f757f3fSDimitry Andric
3015f757f3fSDimitry Andric  namespace ranges {
3025f757f3fSDimitry Andric    using std::ranges::unique;
3035f757f3fSDimitry Andric  }
3045f757f3fSDimitry Andric
3055f757f3fSDimitry Andric  using std::unique_copy;
3065f757f3fSDimitry Andric
3075f757f3fSDimitry Andric  namespace ranges {
3085f757f3fSDimitry Andric    using std::ranges::unique_copy;
3095f757f3fSDimitry Andric    using std::ranges::unique_copy_result;
3105f757f3fSDimitry Andric  } // namespace ranges
3115f757f3fSDimitry Andric
3125f757f3fSDimitry Andric  // [alg.reverse], reverse
3135f757f3fSDimitry Andric  using std::reverse;
3145f757f3fSDimitry Andric
3155f757f3fSDimitry Andric  namespace ranges {
3165f757f3fSDimitry Andric    using std::ranges::reverse;
3175f757f3fSDimitry Andric  }
3185f757f3fSDimitry Andric
3195f757f3fSDimitry Andric  using std::reverse_copy;
3205f757f3fSDimitry Andric
3215f757f3fSDimitry Andric  namespace ranges {
3225f757f3fSDimitry Andric    using std::ranges::reverse_copy;
3235f757f3fSDimitry Andric    using std::ranges::reverse_copy_result;
3245f757f3fSDimitry Andric  } // namespace ranges
3255f757f3fSDimitry Andric
3265f757f3fSDimitry Andric  // [alg.rotate], rotate
3275f757f3fSDimitry Andric  using std::rotate;
3285f757f3fSDimitry Andric
3295f757f3fSDimitry Andric  namespace ranges {
3305f757f3fSDimitry Andric    using std::ranges::rotate;
3315f757f3fSDimitry Andric  }
3325f757f3fSDimitry Andric
3335f757f3fSDimitry Andric  using std::rotate_copy;
3345f757f3fSDimitry Andric
3355f757f3fSDimitry Andric  namespace ranges {
3365f757f3fSDimitry Andric    using std::ranges::rotate_copy;
3375f757f3fSDimitry Andric    using std::ranges::rotate_copy_result;
3385f757f3fSDimitry Andric  } // namespace ranges
3395f757f3fSDimitry Andric
3405f757f3fSDimitry Andric  // [alg.random.sample], sample
3415f757f3fSDimitry Andric  using std::sample;
3425f757f3fSDimitry Andric
3435f757f3fSDimitry Andric  namespace ranges {
3445f757f3fSDimitry Andric    using std::ranges::sample;
3455f757f3fSDimitry Andric  }
3465f757f3fSDimitry Andric
3475f757f3fSDimitry Andric  // [alg.random.shuffle], shuffle
3485f757f3fSDimitry Andric  using std::shuffle;
3495f757f3fSDimitry Andric
3505f757f3fSDimitry Andric  namespace ranges {
3515f757f3fSDimitry Andric    using std::ranges::shuffle;
3525f757f3fSDimitry Andric  }
3535f757f3fSDimitry Andric
3545f757f3fSDimitry Andric  // [alg.shift], shift
3555f757f3fSDimitry Andric  using std::shift_left;
3565f757f3fSDimitry Andric
3575f757f3fSDimitry Andric  namespace ranges {
3585f757f3fSDimitry Andric    // using std::ranges::shift_left;
3595f757f3fSDimitry Andric  }
3605f757f3fSDimitry Andric
3615f757f3fSDimitry Andric  using std::shift_right;
3625f757f3fSDimitry Andric
3635f757f3fSDimitry Andric  namespace ranges {
3645f757f3fSDimitry Andric    // using std::ranges::shift_right;
3655f757f3fSDimitry Andric  }
3665f757f3fSDimitry Andric
3675f757f3fSDimitry Andric  // [alg.sorting], sorting and related operations
3685f757f3fSDimitry Andric  // [alg.sort], sorting
3695f757f3fSDimitry Andric  using std::sort;
3705f757f3fSDimitry Andric
3715f757f3fSDimitry Andric  namespace ranges {
3725f757f3fSDimitry Andric    using std::ranges::sort;
3735f757f3fSDimitry Andric  }
3745f757f3fSDimitry Andric
3755f757f3fSDimitry Andric  using std::stable_sort;
3765f757f3fSDimitry Andric
3775f757f3fSDimitry Andric  namespace ranges {
3785f757f3fSDimitry Andric    using std::ranges::stable_sort;
3795f757f3fSDimitry Andric  }
3805f757f3fSDimitry Andric
3815f757f3fSDimitry Andric  using std::partial_sort;
3825f757f3fSDimitry Andric
3835f757f3fSDimitry Andric  namespace ranges {
3845f757f3fSDimitry Andric    using std::ranges::partial_sort;
3855f757f3fSDimitry Andric  }
3865f757f3fSDimitry Andric  using std::partial_sort_copy;
3875f757f3fSDimitry Andric
3885f757f3fSDimitry Andric  namespace ranges {
3895f757f3fSDimitry Andric    using std::ranges::partial_sort_copy;
3905f757f3fSDimitry Andric    using std::ranges::partial_sort_copy_result;
3915f757f3fSDimitry Andric  } // namespace ranges
3925f757f3fSDimitry Andric
3935f757f3fSDimitry Andric  using std::is_sorted;
3945f757f3fSDimitry Andric  using std::is_sorted_until;
3955f757f3fSDimitry Andric
3965f757f3fSDimitry Andric  namespace ranges {
3975f757f3fSDimitry Andric    using std::ranges::is_sorted;
3985f757f3fSDimitry Andric    using std::ranges::is_sorted_until;
3995f757f3fSDimitry Andric  } // namespace ranges
4005f757f3fSDimitry Andric
4015f757f3fSDimitry Andric  // [alg.nth.element], Nth element
4025f757f3fSDimitry Andric  using std::nth_element;
4035f757f3fSDimitry Andric
4045f757f3fSDimitry Andric  namespace ranges {
4055f757f3fSDimitry Andric    using std::ranges::nth_element;
4065f757f3fSDimitry Andric  }
4075f757f3fSDimitry Andric
4085f757f3fSDimitry Andric  // [alg.binary.search], binary search
4095f757f3fSDimitry Andric  using std::lower_bound;
4105f757f3fSDimitry Andric
4115f757f3fSDimitry Andric  namespace ranges {
4125f757f3fSDimitry Andric    using std::ranges::lower_bound;
4135f757f3fSDimitry Andric  }
4145f757f3fSDimitry Andric
4155f757f3fSDimitry Andric  using std::upper_bound;
4165f757f3fSDimitry Andric
4175f757f3fSDimitry Andric  namespace ranges {
4185f757f3fSDimitry Andric    using std::ranges::upper_bound;
4195f757f3fSDimitry Andric  }
4205f757f3fSDimitry Andric
4215f757f3fSDimitry Andric  using std::equal_range;
4225f757f3fSDimitry Andric
4235f757f3fSDimitry Andric  namespace ranges {
4245f757f3fSDimitry Andric    using std::ranges::equal_range;
4255f757f3fSDimitry Andric  }
4265f757f3fSDimitry Andric
4275f757f3fSDimitry Andric  using std::binary_search;
4285f757f3fSDimitry Andric
4295f757f3fSDimitry Andric  namespace ranges {
4305f757f3fSDimitry Andric    using std::ranges::binary_search;
4315f757f3fSDimitry Andric  }
4325f757f3fSDimitry Andric
4335f757f3fSDimitry Andric  // [alg.partitions], partitions
4345f757f3fSDimitry Andric  using std::is_partitioned;
4355f757f3fSDimitry Andric
4365f757f3fSDimitry Andric  namespace ranges {
4375f757f3fSDimitry Andric    using std::ranges::is_partitioned;
4385f757f3fSDimitry Andric  }
4395f757f3fSDimitry Andric
4405f757f3fSDimitry Andric  using std::partition;
4415f757f3fSDimitry Andric
4425f757f3fSDimitry Andric  namespace ranges {
4435f757f3fSDimitry Andric    using std::ranges::partition;
4445f757f3fSDimitry Andric  }
4455f757f3fSDimitry Andric
4465f757f3fSDimitry Andric  using std::stable_partition;
4475f757f3fSDimitry Andric
4485f757f3fSDimitry Andric  namespace ranges {
4495f757f3fSDimitry Andric    using std::ranges::stable_partition;
4505f757f3fSDimitry Andric  }
4515f757f3fSDimitry Andric
4525f757f3fSDimitry Andric  using std::partition_copy;
4535f757f3fSDimitry Andric
4545f757f3fSDimitry Andric  namespace ranges {
4555f757f3fSDimitry Andric    using std::ranges::partition_copy;
4565f757f3fSDimitry Andric    using std::ranges::partition_copy_result;
4575f757f3fSDimitry Andric  } // namespace ranges
4585f757f3fSDimitry Andric
4595f757f3fSDimitry Andric  using std::partition_point;
4605f757f3fSDimitry Andric
4615f757f3fSDimitry Andric  namespace ranges {
4625f757f3fSDimitry Andric    using std::ranges::partition_point;
4635f757f3fSDimitry Andric  }
4645f757f3fSDimitry Andric  // [alg.merge], merge
4655f757f3fSDimitry Andric  using std::merge;
4665f757f3fSDimitry Andric  namespace ranges {
4675f757f3fSDimitry Andric    using std::ranges::merge;
4685f757f3fSDimitry Andric    using std::ranges::merge_result;
4695f757f3fSDimitry Andric  } // namespace ranges
4705f757f3fSDimitry Andric
4715f757f3fSDimitry Andric  using std::inplace_merge;
4725f757f3fSDimitry Andric
4735f757f3fSDimitry Andric  namespace ranges {
4745f757f3fSDimitry Andric    using std::ranges::inplace_merge;
4755f757f3fSDimitry Andric  }
4765f757f3fSDimitry Andric
4775f757f3fSDimitry Andric  // [alg.set.operations], set operations
4785f757f3fSDimitry Andric  using std::includes;
4795f757f3fSDimitry Andric  namespace ranges {
4805f757f3fSDimitry Andric    using std::ranges::includes;
4815f757f3fSDimitry Andric  }
4825f757f3fSDimitry Andric
4835f757f3fSDimitry Andric  using std::set_union;
4845f757f3fSDimitry Andric
4855f757f3fSDimitry Andric  namespace ranges {
4865f757f3fSDimitry Andric    using std::ranges::set_union;
4875f757f3fSDimitry Andric    using std::ranges::set_union_result;
4885f757f3fSDimitry Andric  } // namespace ranges
4895f757f3fSDimitry Andric
4905f757f3fSDimitry Andric  using std::set_intersection;
4915f757f3fSDimitry Andric  namespace ranges {
4925f757f3fSDimitry Andric    using std::ranges::set_intersection;
4935f757f3fSDimitry Andric    using std::ranges::set_intersection_result;
4945f757f3fSDimitry Andric  } // namespace ranges
4955f757f3fSDimitry Andric
4965f757f3fSDimitry Andric  using std::set_difference;
4975f757f3fSDimitry Andric
4985f757f3fSDimitry Andric  namespace ranges {
4995f757f3fSDimitry Andric    using std::ranges::set_difference;
5005f757f3fSDimitry Andric    using std::ranges::set_difference_result;
5015f757f3fSDimitry Andric  } // namespace ranges
5025f757f3fSDimitry Andric
5035f757f3fSDimitry Andric  using std::set_symmetric_difference;
5045f757f3fSDimitry Andric
5055f757f3fSDimitry Andric  namespace ranges {
5065f757f3fSDimitry Andric    using std::ranges::set_symmetric_difference_result;
5075f757f3fSDimitry Andric
5085f757f3fSDimitry Andric    using std::ranges::set_symmetric_difference;
5095f757f3fSDimitry Andric  } // namespace ranges
5105f757f3fSDimitry Andric
5115f757f3fSDimitry Andric  // [alg.heap.operations], heap operations
5125f757f3fSDimitry Andric  using std::push_heap;
5135f757f3fSDimitry Andric
5145f757f3fSDimitry Andric  namespace ranges {
5155f757f3fSDimitry Andric    using std::ranges::push_heap;
5165f757f3fSDimitry Andric  }
5175f757f3fSDimitry Andric
5185f757f3fSDimitry Andric  using std::pop_heap;
5195f757f3fSDimitry Andric
5205f757f3fSDimitry Andric  namespace ranges {
5215f757f3fSDimitry Andric    using std::ranges::pop_heap;
5225f757f3fSDimitry Andric  }
5235f757f3fSDimitry Andric
5245f757f3fSDimitry Andric  using std::make_heap;
5255f757f3fSDimitry Andric
5265f757f3fSDimitry Andric  namespace ranges {
5275f757f3fSDimitry Andric    using std::ranges::make_heap;
5285f757f3fSDimitry Andric  }
5295f757f3fSDimitry Andric
5305f757f3fSDimitry Andric  using std::sort_heap;
5315f757f3fSDimitry Andric
5325f757f3fSDimitry Andric  namespace ranges {
5335f757f3fSDimitry Andric    using std::ranges::sort_heap;
5345f757f3fSDimitry Andric  }
5355f757f3fSDimitry Andric
5365f757f3fSDimitry Andric  using std::is_heap;
5375f757f3fSDimitry Andric
5385f757f3fSDimitry Andric  namespace ranges {
5395f757f3fSDimitry Andric    using std::ranges::is_heap;
5405f757f3fSDimitry Andric  }
5415f757f3fSDimitry Andric
5425f757f3fSDimitry Andric  using std::is_heap_until;
5435f757f3fSDimitry Andric
5445f757f3fSDimitry Andric  namespace ranges {
5455f757f3fSDimitry Andric    using std::ranges::is_heap_until;
5465f757f3fSDimitry Andric  }
5475f757f3fSDimitry Andric
5485f757f3fSDimitry Andric  // [alg.min.max], minimum and maximum
5495f757f3fSDimitry Andric  using std::min;
5505f757f3fSDimitry Andric
5515f757f3fSDimitry Andric  namespace ranges {
5525f757f3fSDimitry Andric    using std::ranges::min;
5535f757f3fSDimitry Andric  }
5545f757f3fSDimitry Andric
5555f757f3fSDimitry Andric  using std::max;
5565f757f3fSDimitry Andric
5575f757f3fSDimitry Andric  namespace ranges {
5585f757f3fSDimitry Andric    using std::ranges::max;
5595f757f3fSDimitry Andric  }
5605f757f3fSDimitry Andric
5615f757f3fSDimitry Andric  using std::minmax;
5625f757f3fSDimitry Andric
5635f757f3fSDimitry Andric  namespace ranges {
5645f757f3fSDimitry Andric    using std::ranges::minmax_result;
5655f757f3fSDimitry Andric
5665f757f3fSDimitry Andric    using std::ranges::minmax;
5675f757f3fSDimitry Andric  } // namespace ranges
5685f757f3fSDimitry Andric
5695f757f3fSDimitry Andric  using std::min_element;
5705f757f3fSDimitry Andric
5715f757f3fSDimitry Andric  namespace ranges {
5725f757f3fSDimitry Andric    using std::ranges::min_element;
5735f757f3fSDimitry Andric  }
5745f757f3fSDimitry Andric
5755f757f3fSDimitry Andric  using std::max_element;
5765f757f3fSDimitry Andric
5775f757f3fSDimitry Andric  namespace ranges {
5785f757f3fSDimitry Andric    using std::ranges::max_element;
5795f757f3fSDimitry Andric  }
5805f757f3fSDimitry Andric
5815f757f3fSDimitry Andric  using std::minmax_element;
5825f757f3fSDimitry Andric
5835f757f3fSDimitry Andric  namespace ranges {
5845f757f3fSDimitry Andric    using std::ranges::minmax_element_result;
5855f757f3fSDimitry Andric
5865f757f3fSDimitry Andric    using std::ranges::minmax_element;
5875f757f3fSDimitry Andric  } // namespace ranges
5885f757f3fSDimitry Andric    // [alg.clamp], bounded value
5895f757f3fSDimitry Andric  using std::clamp;
5905f757f3fSDimitry Andric
5915f757f3fSDimitry Andric  namespace ranges {
5925f757f3fSDimitry Andric    using std::ranges::clamp;
5935f757f3fSDimitry Andric  }
5945f757f3fSDimitry Andric
5955f757f3fSDimitry Andric  // [alg.lex.comparison], lexicographical comparison
5965f757f3fSDimitry Andric  using std::lexicographical_compare;
5975f757f3fSDimitry Andric
5985f757f3fSDimitry Andric  namespace ranges {
5995f757f3fSDimitry Andric    using std::ranges::lexicographical_compare;
6005f757f3fSDimitry Andric  }
6015f757f3fSDimitry Andric
6025f757f3fSDimitry Andric  // [alg.three.way], three-way comparison algorithms
6035f757f3fSDimitry Andric  using std::lexicographical_compare_three_way;
6045f757f3fSDimitry Andric
6055f757f3fSDimitry Andric  // [alg.permutation.generators], permutations
6065f757f3fSDimitry Andric  using std::next_permutation;
6075f757f3fSDimitry Andric
6085f757f3fSDimitry Andric  namespace ranges {
6095f757f3fSDimitry Andric    using std::ranges::next_permutation_result;
6105f757f3fSDimitry Andric
6115f757f3fSDimitry Andric    using std::ranges::next_permutation;
6125f757f3fSDimitry Andric  } // namespace ranges
6135f757f3fSDimitry Andric
6145f757f3fSDimitry Andric  using std::prev_permutation;
6155f757f3fSDimitry Andric
6165f757f3fSDimitry Andric  namespace ranges {
6175f757f3fSDimitry Andric    using std::ranges::prev_permutation_result;
6185f757f3fSDimitry Andric
6195f757f3fSDimitry Andric    using std::ranges::prev_permutation;
6205f757f3fSDimitry Andric  } // namespace ranges
6215f757f3fSDimitry Andric
6225f757f3fSDimitry Andric} // namespace std
623