С++ 11 предоставляет класс std::allocator_traits
как стандартный способ использования распределителей. Статическая функция std::allocator_traits::construct()
принимает указатель на то, где должен строиться объект. Статическая функция std::allocator_traits::allocate()
, однако, возвращает значение allocator::pointer
, которое должно вести себя как указатель, но оно не обязательно одно (в общем случае, хотя std::allocator::pointer
требуется, чтобы указатель).
Как предполагается использовать статические методы распределения и построения, если, в общем, они будут работать с несовместимыми типами? Могут ли они использоваться, только если тип pointer
фактически конвертируется в обычный обычный указатель?