17template <
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)
64template <
class Iterator>
65inline void advance(Iterator &it,
int n)
67 advance(it, n, IteratorTraits<Iterator>::IteratorCategory());
71template <
class Iterator>
72inline Iterator next(Iterator it,
unsigned int n)
79template <
class Iterator>
80inline Iterator next(Iterator it)
87template <
class Iterator>
88inline Iterator prev(Iterator it,
unsigned int n)
95template <
class Iterator>
96inline 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)
126template <
class Iterator>
127inline int distance(Iterator first,
const Iterator last)
129 return distance(first, last, IteratorTraits<Iterator>::IteratorCategory());
145 return rBegin(
c.iterable);
149auto end(ReversionWrapper<T> c) ->
decltype(rEnd(c.iterable))
151 return rEnd(c.iterable);
155ReversionWrapper<T> reverse(T &&iterable)
164template <
class Container>
165typename Container::Iterator begin(Container &c)
170template <
class Container>
171typename Container::ConstIterator cBegin(
const Container &c)
176template <
class Container>
177typename Container::Iterator end(Container &c)
182template <
class Container>
183typename Container::ConstIterator cEnd(
const Container &c)
188template <
class Container>
189typename Container::ReverseIterator rBegin(Container &c)
194template <
class Container>
195typename Container::ConstReverseIterator crBegin(
const Container &c)
200template <
class Container>
201typename Container::ReverseIterator rEnd(Container &c)
206template <
class Container>
207typename Container::ConstReverseIterator crEnd(
const Container &c)
A unique pointer implementation.
Definition UniquePtr.h:118
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