369 lines · plain
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10export namespace std {11 namespace ranges {12 inline namespace __cpo {13 // [range.access], range access14 using std::ranges::__cpo::begin;15 using std::ranges::__cpo::cbegin;16 using std::ranges::__cpo::cend;17 using std::ranges::__cpo::crbegin;18 using std::ranges::__cpo::crend;19 using std::ranges::__cpo::end;20 using std::ranges::__cpo::rbegin;21 using std::ranges::__cpo::rend;22 23 using std::ranges::__cpo::cdata;24 using std::ranges::__cpo::data;25 using std::ranges::__cpo::empty;26 using std::ranges::__cpo::size;27 using std::ranges::__cpo::ssize;28 } // namespace __cpo29 30 // [range.range], ranges31 using std::ranges::range;32 33 using std::ranges::enable_borrowed_range;34 35 using std::ranges::borrowed_range;36 37 // using std::ranges::const_iterator_t;38 // using std::ranges::const_sentinel_t;39 using std::ranges::iterator_t;40 // using std::ranges::range_const_reference_t;41 using std::ranges::range_common_reference_t;42 using std::ranges::range_difference_t;43 using std::ranges::range_reference_t;44 using std::ranges::range_rvalue_reference_t;45 using std::ranges::range_size_t;46 using std::ranges::range_value_t;47 using std::ranges::sentinel_t;48 49 // [range.sized], sized ranges50 using std::ranges::disable_sized_range;51 using std::ranges::sized_range;52 53 // [range.view], views54 using std::ranges::enable_view;55 using std::ranges::view;56 using std::ranges::view_base;57 58 // [range.refinements], other range refinements59 using std::ranges::bidirectional_range;60 using std::ranges::common_range;61 // using std::ranges::constant_range;62 using std::ranges::contiguous_range;63 using std::ranges::forward_range;64 using std::ranges::input_range;65 using std::ranges::output_range;66 using std::ranges::random_access_range;67 using std::ranges::viewable_range;68 69 // [view.interface], class template view_interface70 using std::ranges::view_interface;71 72 // [range.subrange], sub-ranges73 using std::ranges::subrange;74 using std::ranges::subrange_kind;75 76 using std::ranges::get;77 } // namespace ranges78 79 using std::ranges::get;80 81 namespace ranges {82 83 // [range.dangling], dangling iterator handling84 using std::ranges::dangling;85 86 // [range.elementsof], class template elements_of87 // using std::ranges::elements_of;88 89 using std::ranges::borrowed_iterator_t;90 91 using std::ranges::borrowed_subrange_t;92 93#if _LIBCPP_STD_VER >= 2394 // [range.utility.conv], range conversions95 using std::ranges::to;96#endif97 98 // [range.empty], empty view99 using std::ranges::empty_view;100 101 namespace views {102 using std::ranges::views::empty;103 }104 105 // [range.single], single view106 using std::ranges::single_view;107 108 namespace views {109 using std::ranges::views::single;110 } // namespace views111 112 // [range.iota], iota view113 using std::ranges::iota_view;114 115 namespace views {116 using std::ranges::views::iota;117#if _LIBCPP_STD_VER >= 26118 using std::ranges::views::indices;119#endif120 } // namespace views121 122#if _LIBCPP_STD_VER >= 23123 // [range.repeat], repeat view124 using std::ranges::repeat_view;125 126 namespace views {127 using std::ranges::views::repeat;128 } // namespace views129#endif // _LIBCPP_STD_VER >= 23130 131#if _LIBCPP_HAS_LOCALIZATION132 // [range.istream], istream view133 using std::ranges::basic_istream_view;134 using std::ranges::istream_view;135# if _LIBCPP_HAS_WIDE_CHARACTERS136 using std::ranges::wistream_view;137# endif138 139 namespace views {140 using std::ranges::views::istream;141 }142#endif // _LIBCPP_HAS_LOCALIZATION143 144 // Note: This declaration not in the synopsis or explicitly in the wording.145 // However it is needed for the range adaptors.146 // [range.adaptor.object]/3147 // The template parameter D for range_adaptor_closure may be an148 // incomplete type. If an expression of type cv D is used as an operand149 // to the | operator, D shall be complete and model150 // derived_from<range_adaptor_closure<D>>. The behavior of an expression151 // involving an object of type cv D as an operand to the | operator is152 // undefined if overload resolution selects a program-defined operator|153 // function.154 // This is used internally in C++20 mode.155 using std::ranges::operator|;156#if _LIBCPP_STD_VER >= 23157 // [range.adaptor.object], range adaptor objects158 using std::ranges::range_adaptor_closure;159#endif160 161 // [range.all], all view162 namespace views {163 using std::ranges::views::all;164 using std::ranges::views::all_t;165 } // namespace views166 167 // [range.ref.view], ref view168 using std::ranges::ref_view;169 170 // [range.owning.view], owning view171 using std::ranges::owning_view;172 173#if _LIBCPP_STD_VER >= 23174 // [range.as.rvalue], as rvalue view175 using std::ranges::as_rvalue_view;176 177 namespace views {178 using std::ranges::views::as_rvalue;179 } // namespace views180#endif // _LIBCPP_STD_VER >= 23181 182 // [range.filter], filter view183 using std::ranges::filter_view;184 185 namespace views {186 using std::ranges::views::filter;187 } // namespace views188 189 // [range.transform], transform view190 using std::ranges::transform_view;191 192 namespace views {193 using std::ranges::views::transform;194 } // namespace views195 196 // [range.take], take view197 using std::ranges::take_view;198 199 namespace views {200 using std::ranges::views::take;201 } // namespace views202 203 // [range.take.while], take while view204 using std::ranges::take_while_view;205 206 namespace views {207 using std::ranges::views::take_while;208 } // namespace views209 210 // [range.drop], drop view211 using std::ranges::drop_view;212 213 namespace views {214 using std::ranges::views::drop;215 } // namespace views216 217 // [range.drop.while], drop while view218 using std::ranges::drop_while_view;219 220 namespace views {221 using std::ranges::views::drop_while;222 } // namespace views223 224 using std::ranges::join_view;225 226 namespace views {227 using std::ranges::views::join;228 } // namespace views229 230#if _LIBCPP_STD_VER >= 23231 // [range.join.with]232 using std::ranges::join_with_view;233 234 namespace views {235 using std::ranges::views::join_with;236 } // namespace views237#endif // _LIBCPP_STD_VER >= 23238 239 using std::ranges::lazy_split_view;240 241 // [range.split], split view242 using std::ranges::split_view;243 244 namespace views {245 using std::ranges::views::lazy_split;246 using std::ranges::views::split;247 } // namespace views248 249 // [range.counted], counted view250 namespace views {251 using std::ranges::views::counted;252 } // namespace views253 254 // [range.common], common view255 using std::ranges::common_view;256 257 namespace views {258 using std::ranges::views::common;259 } // namespace views260 261 // [range.reverse], reverse view262 using std::ranges::reverse_view;263 264 namespace views {265 using std::ranges::views::reverse;266 } // namespace views267 268 // [range.as.const], as const view269#if 0270 using std::ranges::as_const_view;271 272 namespace views {273 using std::ranges::views::as_const;274 } // namespace views275#endif276 // [range.elements], elements view277 using std::ranges::elements_view;278 279 using std::ranges::keys_view;280 using std::ranges::values_view;281 282 namespace views {283 using std::ranges::views::elements;284 using std::ranges::views::keys;285 using std::ranges::views::values;286 } // namespace views287 288#if _LIBCPP_STD_VER >= 23289 // [range.zip], zip view290 using std::ranges::zip_view;291 292 namespace views {293 using std::ranges::views::zip;294 } // namespace views295 296 // [range.zip.transform], zip transform view297 using std::ranges::zip_transform_view;298 299 namespace views {300 using std::ranges::views::zip_transform;301 }302#endif // _LIBCPP_STD_VER >= 23303 304#if 0305 using std::ranges::adjacent_view;306 307 namespace views {308 using std::ranges::views::adjacent;309 using std::ranges::views::pairwise;310 } // namespace views311 312 using std::ranges::adjacent_transform_view;313 314 namespace views {315 using std::ranges::views::adjacent_transform;316 using std::ranges::views::pairwise_transform;317 } // namespace views318 319 using std::ranges::chunk_view;320 321 using std::ranges::chunk_view<V>;322 323 namespace views {324 using std::ranges::views::chunk;325 }326 327 using std::ranges::slide_view;328 329 namespace views {330 using std::ranges::views::slide;331 }332#endif333 334#if _LIBCPP_STD_VER >= 23335 // [range.chunk.by], chunk by view336 using std::ranges::chunk_by_view;337 338 namespace views {339 using std::ranges::views::chunk_by;340 }341#endif // _LIBCPP_STD_VER >= 23342 343#if 0344 // [range.stride], stride view345 using std::ranges::stride_view;346 347 namespace views {348 using std::ranges::views::stride;349 }350 351 using std::ranges::cartesian_product_view;352 353 namespace views {354 using std::ranges::views::cartesian_product;355 }356#endif357 } // namespace ranges358 359 namespace views = ranges::views;360 361 using std::tuple_element;362 using std::tuple_size;363 364#if _LIBCPP_STD_VER >= 23365 using std::from_range;366 using std::from_range_t;367#endif // _LIBCPP_STD_VER >= 23368} // namespace std369