17 template <
class Iterator>
28 template <
class Iterator>
35 template <
class Iterator>
36 inline void advance(Iterator &it,
int n, BidirectionalIteratorTag)
51 template <
class Iterator>
52 inline void advance(Iterator &it,
int n, ForwardIteratorTag)
64 template <
class Iterator>
65 inline void advance(Iterator &it,
int n)
67 advance(it, n, IteratorTraits<Iterator>::IteratorCategory());
71 template <
class Iterator>
72 inline Iterator next(Iterator it,
unsigned int n)
79 template <
class Iterator>
80 inline Iterator next(Iterator it)
87 template <
class Iterator>
88 inline Iterator prev(Iterator it,
unsigned int n)
95 template <
class Iterator>
96 inline Iterator prev(Iterator it)
105 template <
class RandomAccessIterator>
106 inline int distance(RandomAccessIterator &first,
const RandomAccessIterator &last, RandomAccessIteratorTag)
112 template <
class ForwardIterator>
113 inline int distance(ForwardIterator &first,
const ForwardIterator &last, ForwardIteratorTag)
117 for (; first != last; ++first)
126 template <
class Iterator>
127 inline int distance(Iterator first,
const Iterator last)
129 return distance(first, last, IteratorTraits<Iterator>::IteratorCategory());
145 return rBegin(c.iterable);
149 auto end(ReversionWrapper<T> c) -> decltype(rEnd(c.iterable))
151 return rEnd(c.iterable);
155 ReversionWrapper<T> reverse(T &&iterable)
164 template <
class Container>
165 typename Container::Iterator begin(Container &c)
170 template <
class Container>
171 typename Container::ConstIterator cBegin(
const Container &c)
176 template <
class Container>
177 typename Container::Iterator end(Container &c)
182 template <
class Container>
183 typename Container::ConstIterator cEnd(
const Container &c)
188 template <
class Container>
189 typename Container::ReverseIterator rBegin(Container &c)
194 template <
class Container>
195 typename Container::ConstReverseIterator crBegin(
const Container &c)
200 template <
class Container>
201 typename Container::ReverseIterator rEnd(Container &c)
206 template <
class Container>
207 typename Container::ConstReverseIterator crEnd(
const Container &c)
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
Dispatching tag for iterators that can only move forward, one element at a time.
Definition: iterator.h:8
Base iterator traits structure.
Definition: iterator.h:19
Dispatching tag for iterators that can jump arbitrary distances in both ways.
Definition: iterator.h:14
Definition: iterator.h:138