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?