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-exception 7// 8//===----------------------------------------------------------------------===// 9 10export namespace std { 11 namespace ranges { 12 inline namespace __cpo { 13 // [range.access], range access 14 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 __cpo 29 30 // [range.range], ranges 31 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 ranges 50 using std::ranges::disable_sized_range; 51 using std::ranges::sized_range; 52 53 // [range.view], views 54 using std::ranges::enable_view; 55 using std::ranges::view; 56 using std::ranges::view_base; 57 58 // [range.refinements], other range refinements 59 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_interface 70 using std::ranges::view_interface; 71 72 // [range.subrange], sub-ranges 73 using std::ranges::subrange; 74 using std::ranges::subrange_kind; 75 76 using std::ranges::get; 77 } // namespace ranges 78 79 using std::ranges::get; 80 81 namespace ranges { 82 83 // [range.dangling], dangling iterator handling 84 using std::ranges::dangling; 85 86 // [range.elementsof], class template elements_of 87 // 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 >= 23 94 // [range.utility.conv], range conversions 95 using std::ranges::to; 96#endif 97 98 // [range.empty], empty view 99 using std::ranges::empty_view; 100 101 namespace views { 102 using std::ranges::views::empty; 103 } 104 105 // [range.single], single view 106 using std::ranges::single_view; 107 108 namespace views { 109 using std::ranges::views::single; 110 } // namespace views 111 112 // [range.iota], iota view 113 using std::ranges::iota_view; 114 115 namespace views { 116 using std::ranges::views::iota; 117 } // namespace views 118 119#if _LIBCPP_STD_VER >= 23 120 // [range.repeat], repeat view 121 using std::ranges::repeat_view; 122 123 namespace views { 124 using std::ranges::views::repeat; 125 } // namespace views 126#endif // _LIBCPP_STD_VER >= 23 127 128#ifndef _LIBCPP_HAS_NO_LOCALIZATION 129 // [range.istream], istream view 130 using std::ranges::basic_istream_view; 131 using std::ranges::istream_view; 132# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 133 using std::ranges::wistream_view; 134# endif 135 136 namespace views { 137 using std::ranges::views::istream; 138 } 139#endif // _LIBCPP_HAS_NO_LOCALIZATION 140 141 // [range.adaptor.object], range adaptor objects 142 // using std::ranges::range_adaptor_closure; 143 144 // [range.all], all view 145 namespace views { 146 using std::ranges::views::all; 147 using std::ranges::views::all_t; 148 } // namespace views 149 150 // [range.ref.view], ref view 151 using std::ranges::ref_view; 152 153 // [range.owning.view], owning view 154 using std::ranges::owning_view; 155 156#if _LIBCPP_STD_VER >= 23 157 // [range.as.rvalue], as rvalue view 158 using std::ranges::as_rvalue_view; 159 160 namespace views { 161 using std::ranges::views::as_rvalue; 162 } // namespace views 163#endif // _LIBCPP_STD_VER >= 23 164 165 // [range.filter], filter view 166 using std::ranges::filter_view; 167 168 namespace views { 169 using std::ranges::views::filter; 170 } // namespace views 171 172 // [range.transform], transform view 173 using std::ranges::transform_view; 174 175 namespace views { 176 using std::ranges::views::transform; 177 } // namespace views 178 179 // [range.take], take view 180 using std::ranges::take_view; 181 182 namespace views { 183 using std::ranges::views::take; 184 } // namespace views 185 186 // [range.take.while], take while view 187 using std::ranges::take_while_view; 188 189 namespace views { 190 using std::ranges::views::take_while; 191 } // namespace views 192 193 // [range.drop], drop view 194 using std::ranges::drop_view; 195 196 namespace views { 197 using std::ranges::views::drop; 198 } // namespace views 199 200 // [range.drop.while], drop while view 201 using std::ranges::drop_while_view; 202 203 namespace views { 204 using std::ranges::views::drop_while; 205 } // namespace views 206 207#ifdef _LIBCPP_ENABLE_EXPERIMENTAL 208 using std::ranges::join_view; 209 210 namespace views { 211 using std::ranges::views::join; 212 } // namespace views 213#endif // _LIBCPP_ENABLE_EXPERIMENTAL 214#if 0 215 using std::ranges::join_with_view; 216 217 namespace views { 218 using std::ranges::views::join_with; 219 } // namespace views 220#endif 221 using std::ranges::lazy_split_view; 222 223 // [range.split], split view 224 using std::ranges::split_view; 225 226 namespace views { 227 using std::ranges::views::lazy_split; 228 using std::ranges::views::split; 229 } // namespace views 230 231 // [range.counted], counted view 232 namespace views { 233 using std::ranges::views::counted; 234 } // namespace views 235 236 // [range.common], common view 237 using std::ranges::common_view; 238 239 namespace views { 240 using std::ranges::views::common; 241 } // namespace views 242 243 // [range.reverse], reverse view 244 using std::ranges::reverse_view; 245 246 namespace views { 247 using std::ranges::views::reverse; 248 } // namespace views 249 250 // [range.as.const], as const view 251#if 0 252 using std::ranges::as_const_view; 253 254 namespace views { 255 using std::ranges::views::as_const; 256 } // namespace views 257#endif 258 // [range.elements], elements view 259 using std::ranges::elements_view; 260 261 using std::ranges::keys_view; 262 using std::ranges::values_view; 263 264 namespace views { 265 using std::ranges::views::elements; 266 using std::ranges::views::keys; 267 using std::ranges::views::values; 268 } // namespace views 269 270#if _LIBCPP_STD_VER >= 23 271 // [range.zip], zip view 272 using std::ranges::zip_view; 273 274 namespace views { 275 using std::ranges::views::zip; 276 } // namespace views 277#endif // _LIBCPP_STD_VER >= 23 278 279#if 0 280 // [range.zip.transform], zip transform view 281 using std::ranges::zip_transform_view; 282 283 namespace views { 284 using std::ranges::views::zip_transform; 285 } 286 287 using std::ranges::adjacent_view; 288 289 namespace views { 290 using std::ranges::views::adjacent; 291 using std::ranges::views::pairwise; 292 } // namespace views 293 294 using std::ranges::adjacent_transform_view; 295 296 namespace views { 297 using std::ranges::views::adjacent_transform; 298 using std::ranges::views::pairwise_transform; 299 } // namespace views 300 301 using std::ranges::chunk_view; 302 303 using std::ranges::chunk_view<V>; 304 305 namespace views { 306 using std::ranges::views::chunk; 307 } 308 309 using std::ranges::slide_view; 310 311 namespace views { 312 using std::ranges::views::slide; 313 } 314#endif 315 316#if _LIBCPP_STD_VER >= 23 317 // [range.chunk.by], chunk by view 318 using std::ranges::chunk_by_view; 319 320 namespace views { 321 using std::ranges::views::chunk_by; 322 } 323#endif // _LIBCPP_STD_VER >= 23 324 325#if 0 326 // [range.stride], stride view 327 using std::ranges::stride_view; 328 329 namespace views { 330 using std::ranges::views::stride; 331 } 332 333 using std::ranges::cartesian_product_view; 334 335 namespace views { 336 using std::ranges::views::cartesian_product; 337 } 338#endif 339 } // namespace ranges 340 341 namespace views = ranges::views; 342 343 using std::tuple_element; 344 using std::tuple_size; 345 346#if _LIBCPP_STD_VER >= 23 347 using std::from_range; 348 using std::from_range_t; 349#endif // _LIBCPP_STD_VER >= 23 350} // namespace std 351