23template <
typename Iterator >
53 typedef typename std::iterator_traits< Iterator >::value_type
value_type;
77 constexpr Iterator
begin()
const {
87 constexpr Iterator
end()
const {
97 constexpr typename std::iterator_traits< Iterator >::reference
front()
const {
107 constexpr typename std::iterator_traits< Iterator >::reference
back()
const {
108 return * ( m_end - 1 );
117 constexpr typename std::iterator_traits< Iterator >::reference
operator[](
typename std::iterator_traits< Iterator >::difference_type index)
const {
118 return m_begin [ index ];
128 return m_begin == m_end;
137 constexpr size_t size()
const {
138 return std::distance ( m_begin, m_end );
153 void pop_front(
typename std::iterator_traits< Iterator >::difference_type n) {
154 m_begin = m_begin + n;
169 void pop_back(
typename std::iterator_traits< Iterator >::difference_type n) {
181 std::pair< iterator_range, iterator_range >
split(
typename std::iterator_traits< Iterator >::difference_type index)
const {
203 iterator_range slice(
typename std::iterator_traits< Iterator >::difference_type
start,
typename std::iterator_traits< Iterator >::difference_type stop)
const {
234template <
typename Iter >
246template <
class Container>
247auto range ( Container && cont ) ->
decltype ( std::forward < Container > ( cont ).range ( ) ) {
Implementation of iterator_range, i.e. pair of iterators. The class provides most notably begin and e...
Definition: range.hpp:24
constexpr Iterator end() const
Accessor of the iterator to the end.
Definition: range.hpp:87
void pop_back(typename std::iterator_traits< Iterator >::difference_type n)
Retracts the end iterator n times.
Definition: range.hpp:169
iterator_range slice(typename std::iterator_traits< Iterator >::difference_type start) const
Creates a subrange of the iterator_range representing interaval of values from start to the end of th...
Definition: range.hpp:223
iterator_range()=default
Constructor of empty iterator_range. Both iterators are initialized to default (same) value.
iterator_range slice(typename std::iterator_traits< Iterator >::difference_type start, typename std::iterator_traits< Iterator >::difference_type stop) const
Creates a subrange of the iterator_range representing interaval of values from start to stop.
Definition: range.hpp:203
constexpr std::iterator_traits< Iterator >::reference operator[](typename std::iterator_traits< Iterator >::difference_type index) const
Array subscript operator implementation.
Definition: range.hpp:117
constexpr std::iterator_traits< Iterator >::reference back() const
Getter of the last value in the iterator_range.
Definition: range.hpp:107
constexpr Iterator begin() const
Accessor of the iterator to the begining.
Definition: range.hpp:77
Iterator iterator
Copy of provided iterator.
Definition: range.hpp:41
void pop_front()
Advances the begin iterator.
Definition: range.hpp:145
Iterator const_iterator
Copy of provided const_iterator.
Definition: range.hpp:47
void pop_back()
Retracts the end iterator.
Definition: range.hpp:161
constexpr size_t size() const
Getter of the distance between begin and end iterators.
Definition: range.hpp:137
void pop_front(typename std::iterator_traits< Iterator >::difference_type n)
Advances the begin iterator n times.
Definition: range.hpp:153
std::iterator_traits< Iterator >::value_type value_type
Copy of value_type from the wrapped iterators.
Definition: range.hpp:53
std::pair< iterator_range, iterator_range > split(typename std::iterator_traits< Iterator >::difference_type index) const
Creates two sub ranges based on middle position. The element at the middle position is included in th...
Definition: range.hpp:181
constexpr bool empty() const
Test whether the iterator_range is empty.
Definition: range.hpp:127
constexpr iterator_range(Iterator begin, Iterator end)
Constructor to make iterator_range from pair of iterators.
Definition: range.hpp:68
constexpr std::iterator_traits< Iterator >::reference front() const
Getter of the first value in the iterator_range.
Definition: range.hpp:97
Definition: sigHandler.cpp:20
auto end(Container &&cont) -> decltype(std::forward(cont).end())
Definition: iterator.hpp:912
auto range(Container &&cont) -> decltype(std::forward< Container >(cont).range())
Definition: range.hpp:247
iterator_range< Iter > make_iterator_range(Iter begin, Iter end)
Helper to create iterator_range from two iterators.
Definition: range.hpp:235
constexpr auto make_pair(T1 &&x, T2 &&y)
Definition: pair.hpp:79
auto begin(Container &&cont) -> decltype(std::forward(cont).begin())
Definition: iterator.hpp:900
void start(measurements::stealth_string name, measurements::Type type)
Definition: measurements.cpp:14