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