Перепривязка в пользовательском распределителе STL с предварительно выделенным блоком

я собираюсь построитьпользовательский распределитель, предварительно выделив большой блок (массив) для храненияN элементы некоторого классаT, а затем просто увеличьте индекс внутри массива для запросов на выделение услуг.

Так как яне хотите любую инициализацию для элементов в предварительно выделенном блоке, что-то вроде этогот работа:

T buffer[N];

потому что в этом случаеTконструктор будет вызываться дляN элементы блока.

Так как я понимаю, чтоstd::aligned_storage Безразлично»звонюTконструктор, я подумал об использованииstd::aligned_storage, что-то вроде этого:

std::aligned_storage<     N * sizeof(T),
    std::alignment_of::value 
>::type buffer;

T* base = static_cast( static_cast(&buffer) );

И тогда распределитель может просто увеличивать базовый указатель, когда запрашивается выделение для T (до(base+N)) и T можно построитьна месте&nbsp;(с размещениемnew) когда нужно.

Я хотел бы использовать эту схему, чтобы определитьпользовательский распределитель для контейнеров STL, Тем не менее, мне кажется, что здесь может быть проблема дляперекомпоновка, На самом деле, если я правильно понимаю, распределитель STL должен поддерживать повторное связывание с типомT&nbsp;к типуUнапример, потому что контейнеры, какstd::list&nbsp;(или другие основанные на узле контейнеры, такие какstd::map) использовать распределители для выделенияузлы&nbsp;которые на самом деле не типаT, но другого типаU&nbsp;(содержащийT&nbsp;и другие "заголовок»&nbsp;служебная информация для узла). Итак, будет ли вышеупомянутоеstd::aligned_storage&nbsp;подход хорошо работает для переплета? Или (как я думаю) правильное выравнивание дляTс делаетне&nbsp;подразумевать правильное выравнивание для другого другого типа?U

Как можно решить эту проблему?

Как я мог определить вышеупомянутоеbuffer&nbsp;заставить это работать также для привязки к некоторому другому типу?U

Стоит ли атаковать эту проблему с другой точки зрения? Если да, то?