19 #ifndef WPIUTIL_WPI_ITERATOR_RANGE_H
20 #define WPIUTIL_WPI_ITERATOR_RANGE_H
31 template <
typename IteratorT>
33 IteratorT begin_iterator, end_iterator;
38 template <
typename Container>
41 : begin_iterator(c.begin()), end_iterator(c.end()) {}
43 : begin_iterator(std::move(begin_iterator)),
44 end_iterator(std::move(end_iterator)) {}
46 IteratorT begin()
const {
return begin_iterator; }
47 IteratorT end()
const {
return end_iterator; }
58 template <
typename T> iterator_range<T>
make_range(std::pair<T, T> p) {
59 return iterator_range<T>(std::move(p.first), std::move(p.second));
63 iterator_range<decltype(begin(std::declval<T>()))> drop_begin(T &&t,
int n) {
64 return make_range(std::next(begin(t), n), end(t));
WPILib C++ utilities (wpiutil) namespace.
Definition: SmallString.h:21
A range adaptor for a pair of iterators.
Definition: iterator_range.h:32
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
Definition: iterator_range.h:54