5#ifndef DERIVATIONFRAMEWORKTRIGGER_RANGEDITR_H
6#define DERIVATIONFRAMEWORKTRIGGER_RANGEDITR_H
20 using tr = std::iterator_traits<T>;
21 static_assert(std::is_base_of<std::bidirectional_iterator_tag, typename tr::iterator_category>::value,
"Templated type must be a random access iterator");
68 return m_begin == other.m_begin &&
69 m_end == other.m_end &&
74 return !(*
this == other);
RangedItr(const T &begin, const T &end)
Construct from a beginning and an end.
bool exhausted() const
Is this iterator exhausted?
reference operator*()
Iterator interface.
RangedItr operator++(int)
std::iterator_traits< T > tr
RangedItr begin() const
Make this act as a range.
typename tr::reference reference
RangedItr()=default
Default Constructor.
typename tr::pointer pointer
RangedItr operator--(int)
bool operator==(const RangedItr &other)
RangedItr(const T &begin, const T &end, const T &position)
Construct from a beginning, an end and a starting position.
difference_type size() const
std::bidirectional_iterator_tag iterator_category
typename tr::difference_type difference_type
bool operator!=(const RangedItr &other)
void restart()
Reset this iterator to its start.
typename tr::value_type value_type