Я пытаюсь написать класс контейнера, который использует STL-распределители. То, что я в настоящее время сделать это иметь частный членКак использовать std :: allocator в моем собственном классе контейнера
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 ++?
В стандартной библиотеке ничего не называется 'allocator_interface'. – AraK