Я понимаю, что стандарт позволяет std::vector<int, A>
иметь одинаковые типы итераторов для разных распределителей A
. Это называется ИССЛЕДОВАНИЯ SCARY.
Теперь вопрос заключается в том, разрешает ли стандарт std::vector<int, A>::iterator
просто typedef из A::pointer
, что делает его просто int*
для распределителя по умолчанию?
Или существует ли какое-либо (неявное) требование, чтобы он был отдельным типом класса для контейнера? Если такого требования нет, то почему все основные реализации (в том числе SCARY) не используют этот подход? Вероятно, это уменьшит работу компилятора еще больше, хотя теперь код, который перегружается на int*
и vector<>::iterator
, не будет компилироваться.