49#ifndef Foam_IndexIterator_H
50#define Foam_IndexIterator_H
64template<
class IntType>
67 static_assert(std::is_integral_v<IntType>,
"Integral required");
160 return (value_ - iter.value_);
170 return (value_ == iter.value_);
177 return (value_ < iter.value_);
186 return !(*
this == iter);
192 return !(iter < *
this);
198 return (iter < *
this);
204 return !(*
this < iter);
213template<
class IntType>
225 typedef const IntType*
pointer;
305 return (iter.value_ - value_);
315 return (value_ == iter.value_);
322 return (value_ > iter.value_);
331 return !(*
this == iter);
337 return !(iter < *
this);
343 return (iter < *
this);
349 return !(*
this < iter);
A random-access, integer-like, input iterator for integral values.
constexpr bool operator==(const IndexIterator &iter) const noexcept
Test for equality of values.
constexpr bool operator<(const IndexIterator &iter) const noexcept
Compare less-than.
constexpr value_type operator-(const IndexIterator &iter) const noexcept
Difference operator.
constexpr IndexIterator operator+(value_type n) const noexcept
Return iterator with offset.
constexpr bool operator>=(const IndexIterator &iter) const noexcept
constexpr value_type operator*() const noexcept
Return the value.
IndexIterator operator-(value_type n) const noexcept
Return iterator with offset.
constexpr value_type operator[](value_type n) const noexcept
Offset dereference operator.
IndexIterator & operator++() noexcept
Prefix increment.
constexpr bool operator<=(const IndexIterator &iter) const noexcept
IndexIterator & operator+=(value_type n) noexcept
Arbitrary increment.
std::random_access_iterator_tag iterator_category
IndexIterator operator--(int) noexcept
Postfix decrement.
IndexIterator operator++(int) noexcept
Postfix increment.
IndexIterator & operator-=(value_type n) noexcept
Arbitrary decrement.
IndexIterator & operator--() noexcept
Prefix decrement.
constexpr IndexIterator() noexcept
Default construct as zero.
constexpr bool operator!=(const IndexIterator &iter) const noexcept
constexpr bool operator>(const IndexIterator &iter) const noexcept
constexpr IndexIterator(value_type val) noexcept
Construct with specified value.
A random-access, integer-like, input iterator for integral values that behaves like a reverse iterato...
constexpr ReverseIndexIterator() noexcept
Default construct as zero.
constexpr bool operator!=(const ReverseIndexIterator &iter) const noexcept
constexpr ReverseIndexIterator operator-(value_type n) const noexcept
Return iterator with offset.
constexpr ReverseIndexIterator operator+(value_type n) const noexcept
Return iterator with offset.
ReverseIndexIterator operator--(int) noexcept
Postfix decrement.
constexpr value_type operator*() const noexcept
Return the value.
ReverseIndexIterator & operator-=(value_type n) noexcept
Arbitrary decrement.
constexpr value_type operator-(const ReverseIndexIterator &iter) const noexcept
Difference operator.
constexpr value_type operator[](value_type n) const noexcept
Offset dereference operator.
constexpr ReverseIndexIterator(value_type n) noexcept
Construct with specified value.
std::random_access_iterator_tag iterator_category
constexpr bool operator<(const ReverseIndexIterator &iter) const noexcept
Compare less-than.
constexpr bool operator<=(const ReverseIndexIterator &iter) const noexcept
ReverseIndexIterator & operator++() noexcept
Prefix increment.
constexpr bool operator>=(const ReverseIndexIterator &iter) const noexcept
constexpr bool operator==(const ReverseIndexIterator &iter) const noexcept
Test for equality of values.
ReverseIndexIterator & operator+=(value_type n) noexcept
Arbitrary increment.
ReverseIndexIterator operator++(int) noexcept
Postfix increment.
constexpr bool operator>(const ReverseIndexIterator &iter) const noexcept
ReverseIndexIterator & operator--() noexcept
Prefix decrement.