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