18 explicit Range(NumT t_end) : m_begin(0), m_end(t_end) {}
19 Range(NumT t_begin, NumT t_end) : m_begin(t_begin), m_end(t_end) {}
22 friend class Range<NumT>;
24 explicit iterator(NumT t_index) : m_index(t_index) {}
26 bool operator!=(
const iterator& t_it)
const {
return t_it.m_index != m_index; }
27 bool operator==(
const iterator& t_it)
const {
return t_it.m_index == m_index; }
28 iterator& operator++() { ++m_index;
return *
this; }
29 iterator operator++(
int) & {
auto result = *
this; ++m_index;
return *
this; }
30 NumT operator*()
const {
return m_index; }
31 NumT* operator->()
const {
return &m_index; }
35 [[nodiscard]] iterator end()
const {
return iterator(m_end); }