The thing about a "generic" iterator is that not all iterators have the same capabilities. So while you might not care about the difference between a bidirectional iterator and a random access iterator, there are people who do and algorithms that can be implemented much more efficiently with the right iterator capabilities.
There are examples of iterators that use type erasure, but they still incorporate the iterator category in the type.
There are examples of iterators that use type erasure, but they still incorporate the iterator category in the type.