|
@@ -8,16 +8,16 @@
|
|
|
#pragma once
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "end_aware_iterator.hpp"
|
|
#include "end_aware_iterator.hpp"
|
|
|
-#include "iterator_fwd.hpp"
|
|
|
|
|
|
|
|
|
|
#include <iterator>
|
|
#include <iterator>
|
|
|
|
|
+#include <utility>
|
|
|
|
|
|
|
|
namespace iterator {
|
|
namespace iterator {
|
|
|
template <typename MetaIterator> class joining_iterator {
|
|
template <typename MetaIterator> class joining_iterator {
|
|
|
public:
|
|
public:
|
|
|
using join_iter = MetaIterator;
|
|
using join_iter = MetaIterator;
|
|
|
using joinable_type = typename join_iter::value_type;
|
|
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 value_type = typename std::iterator_traits<iter_type>::value_type;
|
|
|
using reference = typename std::iterator_traits<iter_type>::reference;
|
|
using reference = typename std::iterator_traits<iter_type>::reference;
|