iterator_fwd.hpp 800 B

12345678910111213141516171819202122232425262728293031
  1. //
  2. // iterator_fwd.hpp
  3. // iterator
  4. //
  5. // Created by Sam Jaffe on 2/18/17.
  6. //
  7. #pragma once
  8. #include <iterator>
  9. #include <utility>
  10. namespace iterator {
  11. namespace detail {
  12. template <typename> struct void_t { using type = void; };
  13. template <typename IterType>
  14. using value_iterator = decltype(std::begin(*std::declval<IterType>()));
  15. template <typename IterType>
  16. using mapped_iterator = decltype(std::begin(std::declval<IterType>()->second));
  17. }
  18. struct {} in_place;
  19. using in_place_t = decltype(in_place);
  20. template <typename Iterator> class end_aware_iterator;
  21. template <typename MetaIterator> class joining_iterator;
  22. template <typename Iterator> class recursive_iterator;
  23. template <typename Iterator, std::size_t MaxDepth> class recursive_iterator_n;
  24. }