forwards.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 {
  11. struct sentinel_t;
  12. // Iterator types
  13. template <typename It> class CaptureIterator;
  14. template <typename It> class EndAwareIterator;
  15. template <typename It> class EnumerateIterator;
  16. template <typename It, typename Pred> class FilterIterator;
  17. template <typename OIt> class JoinIterator;
  18. template <typename It> class ValuesIterator;
  19. template <typename... Its> class ZipIterator;
  20. struct unbounded {};
  21. template <size_t N>
  22. requires(N > 0)
  23. struct bounded {};
  24. template <typename It, typename MaxDepth = unbounded> class RecursiveIterator;
  25. template <typename It, size_t N>
  26. using RecursiveIteratorN = RecursiveIterator<It, bounded<N>>;
  27. template <typename It, typename Projs, typename MaxDepth>
  28. class ProjectingRecursiveIterator;
  29. template <typename CRTP> class Facade;
  30. template <typename It, typename CRTP,
  31. typename = typename std::iterator_traits<It>::iterator_category>
  32. class Proxy;
  33. }