|
|
@@ -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;
|
|
|
|