iterator_fwd.hpp 740 B

12345678910111213141516171819202122232425262728
  1. //
  2. // iterator_fwd.hpp
  3. // iterator
  4. //
  5. // Created by Sam Jaffe on 2/18/17.
  6. //
  7. #pragma once
  8. #include <cstdlib>
  9. namespace iterator::recursive {
  10. struct unbounded;
  11. template <size_t N, size_t I = 1> struct bounded;
  12. template <typename Iter, typename = unbounded> class rimpl;
  13. }
  14. namespace iterator {
  15. template <typename Iter> class end_aware_iterator;
  16. template <typename Iter> class filter_iterator;
  17. template <typename Iter> class joining_iterator;
  18. template <typename Iter> class unkeyed_iterator;
  19. template <typename... Iters> class zip_iterator;
  20. template <typename Iter> using recursive_iterator = recursive::rimpl<Iter>;
  21. template <typename Iter, std::size_t N>
  22. using recursive_iterator_n = recursive::rimpl<Iter, recursive::bounded<N>>;
  23. }