Я пытаюсь написать контейнерный класс, который использует распределители STL. То, что я сейчас делаю, - это приватный член
std::allocator<T> alloc_;
(позже это будет шаблонизировано, чтобы пользователь мог выбрать другой распределитель), а затем вызовите
T* ptr = alloc_.allocate(1,0);
чтобы получить указатель на вновь выделенный объект 'T' (и использовал alloc_.construct для вызова конструктора; см. Ответ ниже). Это работает с библиотекой GNU C ++.
Однако, с STLPort на Solaris, это не дает правильных результатов и приводит к всевозможным причудливым повреждениям памяти. Если я вместо этого
std::allocator_interface<std::allocator<T> > alloc_;
тогда все работает как надо.
Как правильно использовать stl :: allocator? Версия STLPort / Solaris не компилируется с g ++, но подходит ли g ++?