source.hpp 591 B

123456789101112131415161718192021222324252627
  1. #pragma once
  2. #include <iterator>
  3. namespace stream { namespace detail {
  4. template <typename C> class source_stream {
  5. public:
  6. explicit source_stream(C && cont) : source_(std::forward<C>(cont)) {}
  7. auto begin() { return iterator(source_.begin()); }
  8. auto end() { return iterator(source_.end()); }
  9. private:
  10. C source_;
  11. };
  12. template <typename It> class range_stream {
  13. public:
  14. explicit range_stream(It b, It e) : begin_(b), end_(e) {}
  15. auto begin() { return iterator(begin_); }
  16. auto end() { return iterator(end_); }
  17. private:
  18. It begin_, end_;
  19. };
  20. }}