18#ifndef LLVM_ADT_ITERATOR_RANGE_H
19#define LLVM_ADT_ITERATOR_RANGE_H
29template <
typename IteratorT>
31 IteratorT begin_iterator, end_iterator;
36 template <
typename Container>
39 : begin_iterator(c.
begin()), end_iterator(c.
end()) {}
41 : begin_iterator(
std::
move(begin_iterator)),
42 end_iterator(
std::
move(end_iterator)) {}
44 IteratorT
begin()
const {
return begin_iterator; }
45 IteratorT
end()
const {
return end_iterator; }
46 bool empty()
const {
return begin_iterator == end_iterator; }
A range adaptor for a pair of iterators.
iterator_range(IteratorT begin_iterator, IteratorT end_iterator)
iterator_range(Container &&c)
This is an optimization pass for GlobalISel generic memory operations.
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.