Я заметил, что большинству, если не всем контейнерам, теперь требуется тип ::iterator
для соответствия LegacySomethingIterator
вместо SomethingIterator
.
Например, std::vector<>::iterator
теперь требует:
iterator
LegacyRandomAccessIterator
Это похоже на то же самое для большинства других контейнеров, и все они требуют, чтобы их итераторы LegacySomethingIterator
от SomethingIterator
к LegacySomethingIterator
.
Существуют также "новые" требования, которые называются старыми требованиями, например RandomAccessIterator
, почему они были добавлены? Мне кажется, что новые варианты просто затеняют унаследованные варианты, никаких отличий.
Почему новые были созданы в первую очередь, их требования выглядят одинаково для меня. Почему новые просто не заменяют старые требования вместо того, чтобы прямо сейчас иметь 2 разных имени для них (например, RandomAccessIterator
и LegacyRandomAccessIterator
)?