// -*- 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 { // [iterator.assoc.types], associated types // [incrementable.traits], incrementable traits using std::incrementable_traits; using std::iter_difference_t; using std::indirectly_readable_traits; using std::iter_value_t; // [iterator.traits], iterator traits using std::iterator_traits; using std::iter_reference_t; namespace ranges { // [iterator.cust], customization point objects inline namespace __cpo { // [iterator.cust.move], ranges::iter_move using std::ranges::__cpo::iter_move; // [iterator.cust.swap], ranges::iter_swap using std::ranges::__cpo::iter_swap; } // namespace __cpo } // namespace ranges using std::iter_rvalue_reference_t; // [iterator.concepts], iterator concepts // [iterator.concept.readable], concept indirectly_readable using std::indirectly_readable; using std::iter_common_reference_t; // [iterator.concept.writable], concept indirectly_writable using std::indirectly_writable; // [iterator.concept.winc], concept weakly_incrementable using std::weakly_incrementable; // [iterator.concept.inc], concept incrementable using std::incrementable; // [iterator.concept.iterator], concept input_or_output_iterator using std::input_or_output_iterator; // [iterator.concept.sentinel], concept sentinel_for using std::sentinel_for; // [iterator.concept.sizedsentinel], concept sized_sentinel_for using std::disable_sized_sentinel_for; using std::sized_sentinel_for; // [iterator.concept.input], concept input_iterator using std::input_iterator; // [iterator.concept.output], concept output_iterator using std::output_iterator; // [iterator.concept.forward], concept forward_iterator using std::forward_iterator; // [iterator.concept.bidir], concept bidirectional_iterator using std::bidirectional_iterator; // [iterator.concept.random.access], concept random_access_iterator using std::random_access_iterator; // [iterator.concept.contiguous], concept contiguous_iterator using std::contiguous_iterator; // [indirectcallable], indirect callable requirements // [indirectcallable.indirectinvocable], indirect callables using std::indirectly_unary_invocable; using std::indirectly_regular_unary_invocable; using std::indirect_unary_predicate; using std::indirect_binary_predicate; using std::indirect_equivalence_relation; using std::indirect_strict_weak_order; using std::indirect_result_t; // [projected], projected using std::projected; // [alg.req], common algorithm requirements // [alg.req.ind.move], concept indirectly_movable using std::indirectly_movable; using std::indirectly_movable_storable; // [alg.req.ind.copy], concept indirectly_copyable using std::indirectly_copyable; using std::indirectly_copyable_storable; // [alg.req.ind.swap], concept indirectly_swappable using std::indirectly_swappable; // [alg.req.ind.cmp], concept indirectly_comparable using std::indirectly_comparable; // [alg.req.permutable], concept permutable using std::permutable; // [alg.req.mergeable], concept mergeable using std::mergeable; // [alg.req.sortable], concept sortable using std::sortable; // [iterator.primitives], primitives // [std.iterator.tags], iterator tags using std::bidirectional_iterator_tag; using std::contiguous_iterator_tag; using std::forward_iterator_tag; using std::input_iterator_tag; using std::output_iterator_tag; using std::random_access_iterator_tag; // [iterator.operations], iterator operations using std::advance; using std::distance; using std::next; using std::prev; // [range.iter.ops], range iterator operations namespace ranges { // [range.iter.op.advance], ranges​::​advance using std::ranges::advance; // [range.iter.op.distance], ranges​::​distance using std::ranges::distance; // [range.iter.op.next], ranges​::​next using std::ranges::next; // [range.iter.op.prev], ranges​::​prev using std::ranges::prev; } // namespace ranges // [predef.iterators], predefined iterators and sentinels // [reverse.iterators], reverse iterators using std::reverse_iterator; using std::operator==; using std::operator!=; using std::operator<; using std::operator>; using std::operator<=; using std::operator>=; using std::operator<=>; using std::operator-; using std::operator+; using std::make_reverse_iterator; // using std::disable_sized_sentinel_for; // [insert.iterators], insert iterators using std::back_insert_iterator; using std::back_inserter; using std::front_insert_iterator; using std::front_inserter; using std::insert_iterator; using std::inserter; // [const.iterators], constant iterators and sentinels // [const.iterators.alias], alias templates // using std::const_iterator; // using std::const_sentinel; // using std::iter_const_reference_t; // [const.iterators.iterator], class template basic_const_iterator // using std::basic_const_iterator; // using std::common_type; // using std::make_const_iterator; // [move.iterators], move iterators and sentinels using std::move_iterator; using std::make_move_iterator; using std::move_sentinel; using std::common_iterator; // [default.sentinel], default sentinel using std::default_sentinel; using std::default_sentinel_t; // [iterators.counted], counted iterators using std::counted_iterator; // [unreachable.sentinel], unreachable sentinel using std::unreachable_sentinel; using std::unreachable_sentinel_t; // [stream.iterators], stream iterators using std::istream_iterator; using std::ostream_iterator; using std::istreambuf_iterator; using std::ostreambuf_iterator; // [iterator.range], range access using std::begin; using std::cbegin; using std::cend; using std::crbegin; using std::crend; using std::end; using std::rbegin; using std::rend; using std::empty; using std::size; using std::ssize; using std::data; // [depr.iterator] using std::iterator; } // namespace std