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