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