27 template <
typename Iter>
28 struct Range :
public std::pair<Iter, Iter>
30 Range(Iter it1, Iter it2) : std::pair<Iter, Iter>(it1, it2){};
33 template <
typename Iter>
39 template <
typename Cont>
45 template <
typename T,
typename U>
46 std::ostream& operator<<(std::ostream& out, std::pair<T, U>
const& p)
49 (out.operator<<(p.second)).operator<<(std::endl);
53 template <
typename Iter>
54 std::ostream& operator<<(std::ostream& out, Range<Iter> r)
56 for (Iter it = r.first; it != r.second; ++it) {
std::ostream & operator<<(std::ostream &out, std::pair< T, U > const &p)
Range(Iter it1, Iter it2)
Range needs to be a specific type so we can overload some operators (e.g.
Range< Iter > make_range(Iter it1, Iter it2)