26 template <
typename Iterator>
29 Range(Iterator b, Iterator e) : m_begin(b), m_end(e) {}
36 Iterator
begin()
const {
return m_begin; }
37 Iterator
end()
const {
return m_end; }
38 bool empty()
const {
return m_begin == m_end; }
39 std::size_t
size()
const {
return std::distance(m_begin, m_end); }
46 template <
typename Iterator>
47 Range<Iterator>
makeRange(Iterator begin, Iterator end) {
48 return Range<Iterator>(begin, end);
51 template <
typename Iterator>
52 Range<Iterator>
makeRange(std::pair<Iterator, Iterator> range) {
53 return Range<Iterator>(range.first, range.second);