Selaa lähdekoodia

Remove details from the forward file.

Sam Jaffe 5 vuotta sitten
vanhempi
commit
060aad54a1

+ 1 - 13
include/iterator/iterator_fwd.hpp

@@ -7,21 +7,9 @@
 
 #pragma once
 
-#include <iterator>
-#include <utility>
+#include <cstdlib>
 
 namespace iterator {
-  namespace detail {
-    template <typename> struct void_t { using type = void; };
-
-    template <typename IterType>
-    using value_iterator = decltype(std::begin(*std::declval<IterType>()));
-
-    template <typename IterType>
-    using mapped_iterator =
-        decltype(std::begin(std::declval<IterType>()->second));
-  }
-
   struct {
   } in_place;
   using in_place_t = decltype(in_place);

+ 2 - 2
include/iterator/join_iterator.hpp

@@ -8,16 +8,16 @@
 #pragma once
 
 #include "end_aware_iterator.hpp"
-#include "iterator_fwd.hpp"
 
 #include <iterator>
+#include <utility>
 
 namespace iterator {
   template <typename MetaIterator> class joining_iterator {
   public:
     using join_iter = MetaIterator;
     using joinable_type = typename join_iter::value_type;
-    using iter_type = detail::value_iterator<MetaIterator>;
+    using iter_type = decltype(std::begin(*std::declval<join_iter>()));
 
     using value_type = typename std::iterator_traits<iter_type>::value_type;
     using reference = typename std::iterator_traits<iter_type>::reference;

+ 11 - 0
include/iterator/recursive_iterator.hpp

@@ -7,12 +7,23 @@
 
 #pragma once
 
+#include <iterator>
 #include <tuple>
+#include <utility>
 
 #include "end_aware_iterator.hpp"
 #include "iterator_fwd.hpp"
 
 namespace iterator { namespace detail {
+  template <typename> struct void_t { using type = void; };
+
+  template <typename IterType>
+  using value_iterator = decltype(std::begin(*std::declval<IterType>()));
+
+  template <typename IterType>
+  using mapped_iterator =
+      decltype(std::begin(std::declval<IterType>()->second));
+
   struct terminal_layer_tag_t;
   struct continue_layer_tag_t;