| // -*- 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 |