Возьмите здесь (который довольно старый):
Также важно, чтобы тип, используемый для шаблона распределителя параметр и тип, используемый в качестве типа элемента в стандартном контейнер согласен. Например:
std::list<int, std::allocator<long> > // Wrong!не будет работать.
Вопрос
Правильно ли указано это утверждение (или было ли это когда-либо правильно)? Все тесты, которые я выполнил, работают нормально, независимо от того, что я положил для T в std::allocator. Например, std::vector<int, std::allocator<std::string>> скомпилирован и отлично работает, отталкивая назад и стирая элементы и т.д.
(Из того, что я понимаю, std::allocator<std::string>::rebind<int>::other - это волшебство, которое делает эту работу).