// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
export namespace std {
namespace ranges {
// [algorithms.results], algorithm result types
using std::ranges::in_found_result;
using std::ranges::in_fun_result;
using std::ranges::in_in_out_result;
using std::ranges::in_in_result;
using std::ranges::in_out_out_result;
using std::ranges::in_out_result;
#if _LIBCPP_STD_VER >= 23
using std::ranges::in_value_result;
#endif
using std::ranges::min_max_result;
// using std::ranges::out_value_result;
} // namespace ranges
// [alg.nonmodifying], non-modifying sequence operations
// [alg.all.of], all of
using std::all_of;
namespace ranges {
using std::ranges::all_of;
}
// [alg.any.of], any of
using std::any_of;
namespace ranges {
using std::ranges::any_of;
}
// [alg.none.of], none of
using std::none_of;
namespace ranges {
using std::ranges::none_of;
}
#if _LIBCPP_STD_VER >= 23
// [alg.contains], contains
namespace ranges {
using std::ranges::contains;
using std::ranges::contains_subrange;
} // namespace ranges
#endif // _LIBCPP_STD_VER >= 23
// [alg.foreach], for each
using std::for_each;
namespace ranges {
using std::ranges::for_each;
using std::ranges::for_each_result;
} // namespace ranges
using std::for_each_n;
namespace ranges {
using std::ranges::for_each_n_result;
using std::ranges::for_each_n;
} // namespace ranges
// [alg.find], find
using std::find;
using std::find_if;
using std::find_if_not;
namespace ranges {
using std::ranges::find;
using std::ranges::find_if;
using std::ranges::find_if_not;
} // namespace ranges
#if _LIBCPP_STD_VER >= 23
// [alg.find.last], find last
namespace ranges {
using std::ranges::find_last;
using std::ranges::find_last_if;
using std::ranges::find_last_if_not;
} // namespace ranges
#endif
// [alg.find.end], find end
using std::find_end;
namespace ranges {
using std::ranges::find_end;
}
// [alg.find.first.of], find first
using std::find_first_of;
namespace ranges {
using std::ranges::find_first_of;
}
// [alg.adjacent.find], adjacent find
using std::adjacent_find;
namespace ranges {
using std::ranges::adjacent_find;
}
// [alg.count], count
using std::count;
using std::count_if;
namespace ranges {
using std::ranges::count;
using std::ranges::count_if;
} // namespace ranges
// [mismatch], mismatch
using std::mismatch;
namespace ranges {
using std::ranges::mismatch_result;
using std::ranges::mismatch;
} // namespace ranges
// [alg.equal], equal
using std::equal;
namespace ranges {
using std::ranges::equal;
}
// [alg.is.permutation], is permutation
using std::is_permutation;
namespace ranges {
using std::ranges::is_permutation;
}
// [alg.search], search
using std::search;
namespace ranges {
using std::ranges::search;
}
using std::search_n;
namespace ranges {
using std::ranges::search_n;
}
namespace ranges {
#if _LIBCPP_STD_VER >= 23
// [alg.starts.with], starts with
using std::ranges::starts_with;
// [alg.ends.with], ends with
using std::ranges::ends_with;
// [alg.fold], fold
using std::ranges::fold_left;
using std::ranges::fold_left_with_iter;
using std::ranges::fold_left_with_iter_result;
# if 0
using std::ranges::fold_left_first;
using std::ranges::fold_right;
using std::ranges::fold_right_last;
using std::ranges::fold_left_with_iter;
using std::ranges::fold_left_first_with_iter;
using std::ranges::fold_left_first_with_iter;
# endif
#endif // _LIBCPP_STD_VER >= 23
} // namespace ranges
// [alg.modifying.operations], mutating sequence operations
// [alg.copy], copy
using std::copy;
namespace ranges {
using std::ranges::copy;
using std::ranges::copy_result;
} // namespace ranges
using std::copy_n;
namespace ranges {
using std::ranges::copy_n;
using std::ranges::copy_n_result;
} // namespace ranges
using std::copy_if;
namespace ranges {
using std::ranges::copy_if;
using std::ranges::copy_if_result;
} // namespace ranges
using std::copy_backward;
namespace ranges {
using std::ranges::copy_backward;
using std::ranges::copy_backward_result;
} // namespace ranges
// [alg.move], move
using std::move;
namespace ranges {
using std::ranges::move;
using std::ranges::move_result;
} // namespace ranges
using std::move_backward;
namespace ranges {
using std::ranges::move_backward;
using std::ranges::move_backward_result;
} // namespace ranges
// [alg.swap], swap
using std::swap_ranges;
namespace ranges {
using std::ranges::swap_ranges;
using std::ranges::swap_ranges_result;
} // namespace ranges
using std::iter_swap;
// [alg.transform], transform
using std::transform;
namespace ranges {
using std::ranges::binary_transform_result;
using std::ranges::unary_transform_result;
using std::ranges::transform;
} // namespace ranges
using std::replace;
using std::replace_if;
namespace ranges {
using std::ranges::replace;
using std::ranges::replace_if;
} // namespace ranges
using std::replace_copy;
using std::replace_copy_if;
namespace ranges {
using std::ranges::replace_copy;
using std::ranges::replace_copy_if;
using std::ranges::replace_copy_if_result;
using std::ranges::replace_copy_result;
} // namespace ranges
// [alg.fill], fill
using std::fill;
using std::fill_n;
namespace ranges {
using std::ranges::fill;
using std::ranges::fill_n;
} // namespace ranges
// [alg.generate], generate
using std::generate;
using std::generate_n;
namespace ranges {
using std::ranges::generate;
using std::ranges::generate_n;
} // namespace ranges
// [alg.remove], remove
using std::remove;
using std::remove_if;
namespace ranges {
using std::ranges::remove;
using std::ranges::remove_if;
} // namespace ranges
using std::remove_copy;
using std::remove_copy_if;
namespace ranges {
using std::ranges::remove_copy;
using std::ranges::remove_copy_if;
using std::ranges::remove_copy_if_result;
using std::ranges::remove_copy_result;
} // namespace ranges
// [alg.unique], unique
using std::unique;
namespace ranges {
using std::ranges::unique;
}
using std::unique_copy;
namespace ranges {
using std::ranges::unique_copy;
using std::ranges::unique_copy_result;
} // namespace ranges
// [alg.reverse], reverse
using std::reverse;
namespace ranges {
using std::ranges::reverse;
}
using std::reverse_copy;
namespace ranges {
using std::ranges::reverse_copy;
using std::ranges::reverse_copy_result;
} // namespace ranges
// [alg.rotate], rotate
using std::rotate;
namespace ranges {
using std::ranges::rotate;
}
using std::rotate_copy;
namespace ranges {
using std::ranges::rotate_copy;
using std::ranges::rotate_copy_result;
} // namespace ranges
// [alg.random.sample], sample
using std::sample;
namespace ranges {
using std::ranges::sample;
}
// [alg.random.shuffle], shuffle
using std::shuffle;
namespace ranges {
using std::ranges::shuffle;
}
// [alg.shift], shift
using std::shift_left;
namespace ranges {
// using std::ranges::shift_left;
}
using std::shift_right;
namespace ranges {
// using std::ranges::shift_right;
}
// [alg.sorting], sorting and related operations
// [alg.sort], sorting
using std::sort;
namespace ranges {
using std::ranges::sort;
}
using std::stable_sort;
namespace ranges {
using std::ranges::stable_sort;
}
using std::partial_sort;
namespace ranges {
using std::ranges::partial_sort;
}
using std::partial_sort_copy;
namespace ranges {
using std::ranges::partial_sort_copy;
using std::ranges::partial_sort_copy_result;
} // namespace ranges
using std::is_sorted;
using std::is_sorted_until;
namespace ranges {
using std::ranges::is_sorted;
using std::ranges::is_sorted_until;
} // namespace ranges
// [alg.nth.element], Nth element
using std::nth_element;
namespace ranges {
using std::ranges::nth_element;
}
// [alg.binary.search], binary search
using std::lower_bound;
namespace ranges {
using std::ranges::lower_bound;
}
using std::upper_bound;
namespace ranges {
using std::ranges::upper_bound;
}
using std::equal_range;
namespace ranges {
using std::ranges::equal_range;
}
using std::binary_search;
namespace ranges {
using std::ranges::binary_search;
}
// [alg.partitions], partitions
using std::is_partitioned;
namespace ranges {
using std::ranges::is_partitioned;
}
using std::partition;
namespace ranges {
using std::ranges::partition;
}
using std::stable_partition;
namespace ranges {
using std::ranges::stable_partition;
}
using std::partition_copy;
namespace ranges {
using std::ranges::partition_copy;
using std::ranges::partition_copy_result;
} // namespace ranges
using std::partition_point;
namespace ranges {
using std::ranges::partition_point;
}
// [alg.merge], merge
using std::merge;
namespace ranges {
using std::ranges::merge;
using std::ranges::merge_result;
} // namespace ranges
using std::inplace_merge;
namespace ranges {
using std::ranges::inplace_merge;
}
// [alg.set.operations], set operations
using std::includes;
namespace ranges {
using std::ranges::includes;
}
using std::set_union;
namespace ranges {
using std::ranges::set_union;
using std::ranges::set_union_result;
} // namespace ranges
using std::set_intersection;
namespace ranges {
using std::ranges::set_intersection;
using std::ranges::set_intersection_result;
} // namespace ranges
using std::set_difference;
namespace ranges {
using std::ranges::set_difference;
using std::ranges::set_difference_result;
} // namespace ranges
using std::set_symmetric_difference;
namespace ranges {
using std::ranges::set_symmetric_difference_result;
using std::ranges::set_symmetric_difference;
} // namespace ranges
// [alg.heap.operations], heap operations
using std::push_heap;
namespace ranges {
using std::ranges::push_heap;
}
using std::pop_heap;
namespace ranges {
using std::ranges::pop_heap;
}
using std::make_heap;
namespace ranges {
using std::ranges::make_heap;
}
using std::sort_heap;
namespace ranges {
using std::ranges::sort_heap;
}
using std::is_heap;
namespace ranges {
using std::ranges::is_heap;
}
using std::is_heap_until;
namespace ranges {
using std::ranges::is_heap_until;
}
// [alg.min.max], minimum and maximum
using std::min;
namespace ranges {
using std::ranges::min;
}
using std::max;
namespace ranges {
using std::ranges::max;
}
using std::minmax;
namespace ranges {
using std::ranges::minmax_result;
using std::ranges::minmax;
} // namespace ranges
using std::min_element;
namespace ranges {
using std::ranges::min_element;
}
using std::max_element;
namespace ranges {
using std::ranges::max_element;
}
using std::minmax_element;
namespace ranges {
using std::ranges::minmax_element_result;
using std::ranges::minmax_element;
} // namespace ranges
// [alg.clamp], bounded value
using std::clamp;
namespace ranges {
using std::ranges::clamp;
}
// [alg.lex.comparison], lexicographical comparison
using std::lexicographical_compare;
namespace ranges {
using std::ranges::lexicographical_compare;
}
// [alg.three.way], three-way comparison algorithms
using std::lexicographical_compare_three_way;
// [alg.permutation.generators], permutations
using std::next_permutation;
namespace ranges {
using std::ranges::next_permutation_result;
using std::ranges::next_permutation;
} // namespace ranges
using std::prev_permutation;
namespace ranges {
using std::ranges::prev_permutation_result;
using std::ranges::prev_permutation;
} // namespace ranges
} // namespace std