C++17 deprecated std::iterator and removed it as a base class for all
iterator adaptors.
Affected subclauses:
- [depr.iterator] (previously [iterator.iterator])
- [reverse.iterator]
- [back.insert.iterator]
- [front.insert.iterator]
- [insert.iterator]
- [istream.iterator]
- [ostream.iterator]
- [istreambuf.iterator]
- [ostreambuf.iterator]
- [depr.storage.iterator]
Implements part of P0174R2 'Deprecating Vestigial Library Parts in C++17'.
Interestingly, libc++ has never been conforming here.
https://timsong-cpp.github.io/cppwp/n3337/storage.iterator
requires inheriting from iterator<output_iterator_tag, void, void, void, void>.
But since this is removed in '20, do we even care about it? I guess not; so this #if seems like the minimal change, and therefore OK by me.