Beginning with C++17 inheriting from std::iterator<...>
is deprecated. Instead one should specialize the std::iterator_traits<...>
for the own iterator type.
I used to write my iterator class as nested types in the container classes they belong to.
Trying to partial specialize the std::iterator_traits<C<T>>
leads to a non-deducible context for the value type T
for my container C
.
The question: should I now (as of C++17) define my iterator classes outside my container classes?