17template <
class Iterator>
27 using Reference = T &;
36 using Pointer =
const T *;
37 using Reference =
const T &;
46template <
class Iterator>
53template <
class Iterator>
54inline void advance(Iterator &it,
int n, BidirectionalIteratorTag)
69template <
class Iterator>
70inline void advance(Iterator &it,
int n, ForwardIteratorTag)
80template <
class Iterator>
81inline void advance(Iterator &it,
int n)
83 advance(it, n,
typename IteratorTraits<Iterator>::IteratorCategory());
87template <
class Iterator>
88inline Iterator next(Iterator it,
unsigned int n)
95template <
class Iterator>
96inline Iterator next(Iterator it)
103template <
class Iterator>
104inline Iterator prev(Iterator it,
unsigned int n)
111template <
class Iterator>
112inline Iterator prev(Iterator it)
119template <
class RandomAccessIterator>
120inline int distance(RandomAccessIterator first, RandomAccessIterator last, RandomAccessIteratorTag)
126template <
class ForwardIterator>
127inline int distance(ForwardIterator first, ForwardIterator last, ForwardIteratorTag)
131 for (; first != last; ++first)
138template <
class Iterator>
139inline int distance(Iterator first, Iterator last)
141 return distance(first, last,
typename IteratorTraits<Iterator>::IteratorCategory());
157 return rBegin(
c.iterable);
161auto end(ReversionWrapper<T> c) ->
decltype(rEnd(c.iterable))
163 return rEnd(c.iterable);
167ReversionWrapper<T> reverse(T &&iterable)
176template <
class Container>
177typename Container::Iterator begin(Container &c)
182template <
class Container>
183typename Container::ConstIterator cBegin(
const Container &c)
188template <
class Container>
189typename Container::Iterator end(Container &c)
194template <
class Container>
195typename Container::ConstIterator cEnd(
const Container &c)
200template <
class Container>
201typename Container::ReverseIterator rBegin(Container &c)
206template <
class Container>
207typename Container::ConstReverseIterator crBegin(
const Container &c)
212template <
class Container>
213typename Container::ReverseIterator rEnd(Container &c)
218template <
class Container>
219typename 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:150