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