29 Range(T rbegin, T rend) : m_begin(rbegin), m_end(rend)
34 class Iterator :
public std::iterator<std::input_iterator_tag, T>
37 Iterator(T value) : m_value(value)
40 Iterator(
const Iterator& other) : m_value(other.m_value)
43 Iterator(Iterator&& other) : m_value(other.m_value)
46 Iterator& operator=(
const Iterator&) =
delete;
47 Iterator& operator++()
52 Iterator& operator++(
int)
62 bool operator!=(
const Iterator& other)
64 return this->m_value != other.m_value;
66 bool operator==(
const Iterator& other)
68 return this->m_value == other.m_value;
77 Iterator begin()
const
79 return Iterator(m_begin);
87 return Iterator(m_end);
104 template <
typename T>
105 inline Range<T> range(T rend)
107 return Range<T>(0, rend);
119 template <
typename T>
120 inline Range<T> range(T rbegin, T rend)
122 return Range<T>(rbegin, rend);
all of classes and functions are contained in the shogun namespace