forwards.h 1010 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // iterator_fwd.h
  3. // iterator
  4. //
  5. // Created by Sam Jaffe on 2/18/17.
  6. //
  7. #pragma once
  8. #include <cstdlib>
  9. #include <iterator>
  10. namespace iterator::recursive {
  11. struct unbounded;
  12. template <size_t N, size_t I = 1> struct bounded;
  13. template <typename, typename = unbounded> class rimpl;
  14. }
  15. namespace iterator {
  16. struct sentinel_t;
  17. // Iterator types
  18. template <typename> class end_aware_iterator;
  19. template <typename It, typename = typename It::sentinel_type>
  20. class sentinel_iterator;
  21. template <typename, typename> class filter_iterator;
  22. template <typename> class joining_iterator;
  23. template <typename> class unkeyed_iterator;
  24. template <typename...> class zip_iterator;
  25. template <typename It> using recursive_iterator = recursive::rimpl<It>;
  26. template <typename It, std::size_t N>
  27. using recursive_iterator_n = recursive::rimpl<It, recursive::bounded<N>>;
  28. template <typename> class facade;
  29. template <typename It, typename,
  30. typename = typename std::iterator_traits<It>::iterator_category>
  31. class proxy;
  32. }