di 0.1.0
Loading...
Searching...
No Matches
di::container::ReverseIterator< Iter > Class Template Reference

#include <di/container/iterator/reverse_iterator.h>

Inheritance diagram for di::container::ReverseIterator< Iter >:
di::container::IteratorBase< ReverseIterator< Iter >, meta::Conditional< concepts::RandomAccessIterator< Iter >, RandomAccessIteratorTag, BidirectionalIteratorTag >, meta::IteratorValue< Iter >, meta::IteratorSSizeType< Iter > >

Public Member Functions

constexpr ReverseIterator ()=default
constexpr ReverseIterator (Iter iter)
template<typename U>
requires (!concepts::SameAs<Iter, U> && concepts::ConvertibleTo<U const&, Iter>)
constexpr ReverseIterator (ReverseIterator< U > const &other)
template<typename U>
requires (!concepts::SameAs<Iter, U> && concepts::ConvertibleTo<U const&, Iter> && concepts::AssignableFrom<Iter&, U const&>)
constexpr auto operator= (ReverseIterator< U > const &other) -> ReverseIterator &
constexpr auto base () const -> Iter
constexpr auto operator* () const -> decltype(auto)
constexpr auto operator-> () const
constexpr void advance_one ()
constexpr void back_one ()
constexpr void advance_n (SSizeType n)
Public Member Functions inherited from di::container::IteratorBase< ReverseIterator< Iter >, meta::Conditional< concepts::RandomAccessIterator< Iter >, RandomAccessIteratorTag, BidirectionalIteratorTag >, meta::IteratorValue< Iter >, meta::IteratorSSizeType< Iter > >
 IteratorBase ()=default
auto operator= (IteratorBase const &) -> IteratorBase &=default
constexpr auto operator++ () -> ReverseIterator< Iter > &
constexpr auto operator-- () -> ReverseIterator< Iter > &requires(concepts::DerivedFrom< meta::Conditional< concepts::RandomAccessIterator< Iter >, RandomAccessIteratorTag, BidirectionalIteratorTag >, BidirectionalIteratorTag >)
constexpr auto operator[] (meta::IteratorSSizeType< Iter > n) const -> decltype(auto) requires(concepts::DerivedFrom< meta::Conditional< concepts::RandomAccessIterator< Iter >, RandomAccessIteratorTag, BidirectionalIteratorTag >, RandomAccessIteratorTag >)
constexpr auto operator+= (meta::IteratorSSizeType< Iter > n) -> ReverseIterator< Iter > &requires(concepts::DerivedFrom< meta::Conditional< concepts::RandomAccessIterator< Iter >, RandomAccessIteratorTag, BidirectionalIteratorTag >, RandomAccessIteratorTag >)
constexpr auto operator-= (meta::IteratorSSizeType< Iter > n) -> ReverseIterator< Iter > &requires(concepts::DerivedFrom< meta::Conditional< concepts::RandomAccessIterator< Iter >, RandomAccessIteratorTag, BidirectionalIteratorTag >, RandomAccessIteratorTag >)

Friends

constexpr friend auto tag_invoke (types::Tag< iterator_move >, ReverseIterator const &self) -> decltype(auto) requires(
template<concepts::IndirectlySwappable< Iter > Other>
constexpr friend void tag_invoke (types::Tag< iterator_swap >, ReverseIterator const &a, ReverseIterator< Other > const &b)

Constructor & Destructor Documentation

◆ ReverseIterator() [1/3]

template<concepts::BidirectionalIterator Iter>
di::container::ReverseIterator< Iter >::ReverseIterator ( )
constexprdefault

◆ ReverseIterator() [2/3]

template<concepts::BidirectionalIterator Iter>
di::container::ReverseIterator< Iter >::ReverseIterator ( Iter iter)
inlineexplicitconstexpr

◆ ReverseIterator() [3/3]

template<concepts::BidirectionalIterator Iter>
template<typename U>
requires (!concepts::SameAs<Iter, U> && concepts::ConvertibleTo<U const&, Iter>)
di::container::ReverseIterator< Iter >::ReverseIterator ( ReverseIterator< U > const & other)
inlineconstexpr

Member Function Documentation

◆ advance_n()

template<concepts::BidirectionalIterator Iter>
void di::container::ReverseIterator< Iter >::advance_n ( SSizeType n)
inlineconstexpr

◆ advance_one()

template<concepts::BidirectionalIterator Iter>
void di::container::ReverseIterator< Iter >::advance_one ( )
inlineconstexpr

◆ back_one()

template<concepts::BidirectionalIterator Iter>
void di::container::ReverseIterator< Iter >::back_one ( )
inlineconstexpr

◆ base()

template<concepts::BidirectionalIterator Iter>
auto di::container::ReverseIterator< Iter >::base ( ) const->Iter
inlineconstexpr

◆ operator*()

template<concepts::BidirectionalIterator Iter>
auto di::container::ReverseIterator< Iter >::operator* ( ) const->decltype(auto)
inlineconstexpr

◆ operator->()

template<concepts::BidirectionalIterator Iter>
auto di::container::ReverseIterator< Iter >::operator-> ( ) const
inlineconstexpr

◆ operator=()

template<concepts::BidirectionalIterator Iter>
template<typename U>
requires (!concepts::SameAs<Iter, U> && concepts::ConvertibleTo<U const&, Iter> && concepts::AssignableFrom<Iter&, U const&>)
auto di::container::ReverseIterator< Iter >::operator= ( ReverseIterator< U > const & other) ->ReverseIterator &
inlineconstexpr

◆ tag_invoke [1/2]

template<concepts::BidirectionalIterator Iter>
friend auto tag_invoke ( types::Tag< iterator_move > ,
ReverseIterator< Iter > const & self )->decltype(auto) requires(
friend

◆ tag_invoke [2/2]

template<concepts::BidirectionalIterator Iter>
template<concepts::IndirectlySwappable< Iter > Other>
friend void tag_invoke ( types::Tag< iterator_swap > ,
ReverseIterator< Iter > const & a,
ReverseIterator< Other > const & b )
friend

The documentation for this class was generated from the following file: