| // -*- 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 { | |
| inline namespace __cpo { | |
| // [range.access], range access | |
| using std::ranges::__cpo::begin; | |
| using std::ranges::__cpo::cbegin; | |
| using std::ranges::__cpo::cend; | |
| using std::ranges::__cpo::crbegin; | |
| using std::ranges::__cpo::crend; | |
| using std::ranges::__cpo::end; | |
| using std::ranges::__cpo::rbegin; | |
| using std::ranges::__cpo::rend; | |
| using std::ranges::__cpo::cdata; | |
| using std::ranges::__cpo::data; | |
| using std::ranges::__cpo::empty; | |
| using std::ranges::__cpo::size; | |
| using std::ranges::__cpo::ssize; | |
| } // namespace __cpo | |
| // [range.range], ranges | |
| using std::ranges::range; | |
| using std::ranges::enable_borrowed_range; | |
| using std::ranges::borrowed_range; | |
| // using std::ranges::const_iterator_t; | |
| // using std::ranges::const_sentinel_t; | |
| using std::ranges::iterator_t; | |
| // using std::ranges::range_const_reference_t; | |
| using std::ranges::range_common_reference_t; | |
| using std::ranges::range_difference_t; | |
| using std::ranges::range_reference_t; | |
| using std::ranges::range_rvalue_reference_t; | |
| using std::ranges::range_size_t; | |
| using std::ranges::range_value_t; | |
| using std::ranges::sentinel_t; | |
| // [range.sized], sized ranges | |
| using std::ranges::disable_sized_range; | |
| using std::ranges::sized_range; | |
| // [range.view], views | |
| using std::ranges::enable_view; | |
| using std::ranges::view; | |
| using std::ranges::view_base; | |
| // [range.refinements], other range refinements | |
| using std::ranges::bidirectional_range; | |
| using std::ranges::common_range; | |
| // using std::ranges::constant_range; | |
| using std::ranges::contiguous_range; | |
| using std::ranges::forward_range; | |
| using std::ranges::input_range; | |
| using std::ranges::output_range; | |
| using std::ranges::random_access_range; | |
| using std::ranges::viewable_range; | |
| // [view.interface], class template view_interface | |
| using std::ranges::view_interface; | |
| // [range.subrange], sub-ranges | |
| using std::ranges::subrange; | |
| using std::ranges::subrange_kind; | |
| using std::ranges::get; | |
| } // namespace ranges | |
| using std::ranges::get; | |
| namespace ranges { | |
| // [range.dangling], dangling iterator handling | |
| using std::ranges::dangling; | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.elementsof], class template elements_of | |
| using std::ranges::elements_of; | |
| #endif | |
| using std::ranges::borrowed_iterator_t; | |
| using std::ranges::borrowed_subrange_t; | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.utility.conv], range conversions | |
| using std::ranges::to; | |
| #endif | |
| // [range.empty], empty view | |
| using std::ranges::empty_view; | |
| namespace views { | |
| using std::ranges::views::empty; | |
| } | |
| // [range.single], single view | |
| using std::ranges::single_view; | |
| namespace views { | |
| using std::ranges::views::single; | |
| } // namespace views | |
| // [range.iota], iota view | |
| using std::ranges::iota_view; | |
| namespace views { | |
| using std::ranges::views::iota; | |
| #if _LIBCPP_STD_VER >= 26 | |
| using std::ranges::views::indices; | |
| #endif | |
| } // namespace views | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.repeat], repeat view | |
| using std::ranges::repeat_view; | |
| namespace views { | |
| using std::ranges::views::repeat; | |
| } // namespace views | |
| #endif // _LIBCPP_STD_VER >= 23 | |
| #if _LIBCPP_HAS_LOCALIZATION | |
| // [range.istream], istream view | |
| using std::ranges::basic_istream_view; | |
| using std::ranges::istream_view; | |
| # if _LIBCPP_HAS_WIDE_CHARACTERS | |
| using std::ranges::wistream_view; | |
| # endif | |
| namespace views { | |
| using std::ranges::views::istream; | |
| } | |
| #endif // _LIBCPP_HAS_LOCALIZATION | |
| // Note: This declaration not in the synopsis or explicitly in the wording. | |
| // However it is needed for the range adaptors. | |
| // [range.adaptor.object]/3 | |
| // The template parameter D for range_adaptor_closure may be an | |
| // incomplete type. If an expression of type cv D is used as an operand | |
| // to the | operator, D shall be complete and model | |
| // derived_from<range_adaptor_closure<D>>. The behavior of an expression | |
| // involving an object of type cv D as an operand to the | operator is | |
| // undefined if overload resolution selects a program-defined operator| | |
| // function. | |
| // This is used internally in C++20 mode. | |
| using std::ranges::operator|; | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.adaptor.object], range adaptor objects | |
| using std::ranges::range_adaptor_closure; | |
| #endif | |
| // [range.all], all view | |
| namespace views { | |
| using std::ranges::views::all; | |
| using std::ranges::views::all_t; | |
| } // namespace views | |
| // [range.ref.view], ref view | |
| using std::ranges::ref_view; | |
| // [range.owning.view], owning view | |
| using std::ranges::owning_view; | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.as.rvalue], as rvalue view | |
| using std::ranges::as_rvalue_view; | |
| namespace views { | |
| using std::ranges::views::as_rvalue; | |
| } // namespace views | |
| #endif // _LIBCPP_STD_VER >= 23 | |
| #if _LIBCPP_STD_VER >= 26 | |
| // [range.concat.view], concat_view | |
| using std::ranges::concat_view; | |
| namespace views { | |
| using std::ranges::views::concat; | |
| } // namespace views | |
| #endif // _LIBCPP_STD_VER >= 26 | |
| // [range.filter], filter view | |
| using std::ranges::filter_view; | |
| namespace views { | |
| using std::ranges::views::filter; | |
| } // namespace views | |
| // [range.transform], transform view | |
| using std::ranges::transform_view; | |
| namespace views { | |
| using std::ranges::views::transform; | |
| } // namespace views | |
| // [range.take], take view | |
| using std::ranges::take_view; | |
| namespace views { | |
| using std::ranges::views::take; | |
| } // namespace views | |
| // [range.take.while], take while view | |
| using std::ranges::take_while_view; | |
| namespace views { | |
| using std::ranges::views::take_while; | |
| } // namespace views | |
| // [range.drop], drop view | |
| using std::ranges::drop_view; | |
| namespace views { | |
| using std::ranges::views::drop; | |
| } // namespace views | |
| // [range.drop.while], drop while view | |
| using std::ranges::drop_while_view; | |
| namespace views { | |
| using std::ranges::views::drop_while; | |
| } // namespace views | |
| using std::ranges::join_view; | |
| namespace views { | |
| using std::ranges::views::join; | |
| } // namespace views | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.join.with] | |
| using std::ranges::join_with_view; | |
| namespace views { | |
| using std::ranges::views::join_with; | |
| } // namespace views | |
| #endif // _LIBCPP_STD_VER >= 23 | |
| using std::ranges::lazy_split_view; | |
| // [range.split], split view | |
| using std::ranges::split_view; | |
| namespace views { | |
| using std::ranges::views::lazy_split; | |
| using std::ranges::views::split; | |
| } // namespace views | |
| // [range.counted], counted view | |
| namespace views { | |
| using std::ranges::views::counted; | |
| } // namespace views | |
| // [range.common], common view | |
| using std::ranges::common_view; | |
| namespace views { | |
| using std::ranges::views::common; | |
| } // namespace views | |
| // [range.reverse], reverse view | |
| using std::ranges::reverse_view; | |
| namespace views { | |
| using std::ranges::views::reverse; | |
| } // namespace views | |
| // [range.as.const], as const view | |
| #if 0 | |
| using std::ranges::as_const_view; | |
| namespace views { | |
| using std::ranges::views::as_const; | |
| } // namespace views | |
| #endif | |
| // [range.elements], elements view | |
| using std::ranges::elements_view; | |
| using std::ranges::keys_view; | |
| using std::ranges::values_view; | |
| namespace views { | |
| using std::ranges::views::elements; | |
| using std::ranges::views::keys; | |
| using std::ranges::views::values; | |
| } // namespace views | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.zip], zip view | |
| using std::ranges::zip_view; | |
| namespace views { | |
| using std::ranges::views::zip; | |
| } // namespace views | |
| // [range.zip.transform], zip transform view | |
| using std::ranges::zip_transform_view; | |
| namespace views { | |
| using std::ranges::views::zip_transform; | |
| } | |
| using std::ranges::adjacent_view; | |
| namespace views { | |
| using std::ranges::views::adjacent; | |
| using std::ranges::views::pairwise; | |
| } // namespace views | |
| using std::ranges::adjacent_transform_view; | |
| namespace views { | |
| using std::ranges::views::adjacent_transform; | |
| using std::ranges::views::pairwise_transform; | |
| } // namespace views | |
| #endif // _LIBCPP_STD_VER >= 23 | |
| #if 0 | |
| using std::ranges::chunk_view; | |
| using std::ranges::chunk_view<V>; | |
| namespace views { | |
| using std::ranges::views::chunk; | |
| } | |
| using std::ranges::slide_view; | |
| namespace views { | |
| using std::ranges::views::slide; | |
| } | |
| #endif | |
| #if _LIBCPP_STD_VER >= 23 | |
| // [range.chunk.by], chunk by view | |
| using std::ranges::chunk_by_view; | |
| namespace views { | |
| using std::ranges::views::chunk_by; | |
| } | |
| // [range.stride], stride view | |
| using std::ranges::stride_view; | |
| namespace views { | |
| using std::ranges::views::stride; | |
| } | |
| # if 0 | |
| using std::ranges::cartesian_product_view; | |
| namespace views { | |
| using std::ranges::views::cartesian_product; | |
| } | |
| # endif | |
| // [range.enumerate] | |
| using std::ranges::enumerate_view; | |
| namespace views { | |
| using std::ranges::views::enumerate; | |
| } | |
| #endif // _LIBCPP_STD_VER >= 23 | |
| } // namespace ranges | |
| namespace views = ranges::views; | |
| using std::tuple_element; | |
| using std::tuple_size; | |
| #if _LIBCPP_STD_VER >= 23 | |
| using std::from_range; | |
| using std::from_range_t; | |
| #endif // _LIBCPP_STD_VER >= 23 | |
| } // namespace std |