@@ -100,8 +100,7 @@ class iter::impl::Chained {
100100 Chained (Chained&&) = default ;
101101
102102 template <typename TupTypeT>
103- class Iterator : public std ::iterator<std::input_iterator_tag,
104- typename IteratorData<TupTypeT>::TraitsValue> {
103+ class Iterator {
105104 private:
106105 using IterData = IteratorData<TupTypeT>;
107106 std::size_t index_;
@@ -116,6 +115,12 @@ class iter::impl::Chained {
116115 }
117116
118117 public:
118+ using iterator_category = std::input_iterator_tag;
119+ using value_type = typename IteratorData<TupTypeT>::TraitsValue;
120+ using difference_type = std::ptrdiff_t ;
121+ using pointer = value_type*;
122+ using reference = value_type&;
123+
119124 Iterator (std::size_t i, typename IterData::IterTupType&& iters,
120125 typename IterData::IterTupType&& ends)
121126 : index_{i}, iters_(std::move(iters)), ends_(std::move(ends)) {
@@ -224,8 +229,7 @@ class iter::impl::ChainedFromIterable {
224229 public:
225230 ChainedFromIterable (ChainedFromIterable&&) = default ;
226231 template <typename ContainerT>
227- class Iterator : public std ::iterator<std::input_iterator_tag,
228- iterator_traits_deref<iterator_deref<ContainerT>>> {
232+ class Iterator {
229233 private:
230234 template <typename >
231235 friend class Iterator ;
@@ -257,6 +261,12 @@ class iter::impl::ChainedFromIterable {
257261 }
258262
259263 public:
264+ using iterator_category = std::input_iterator_tag;
265+ using value_type = iterator_traits_deref<iterator_deref<ContainerT>>;
266+ using difference_type = std::ptrdiff_t ;
267+ using pointer = value_type*;
268+ using reference = value_type&;
269+
260270 Iterator (IteratorWrapper<ContainerT>&& top_iter,
261271 IteratorWrapper<ContainerT>&& top_end)
262272 : top_level_iter_{std::move (top_iter)},
0 commit comments