Estoy tratando de escribir una clase de contenedor que use asignadores de STL. Lo que actualmente hago es tener un miembro privadoCómo usar std :: allocator en mi propia clase de contenedor
std::allocator<T> alloc_;
(esta tarde será templated de manera que el usuario puede elegir un factor de imputación diferente) y luego llamar
T* ptr = alloc_.allocate(1,0);
para obtener un puntero a una nueva asignó el objeto 'T' (y utilizó alloc_.construct para llamar al constructor; vea la respuesta a continuación). Esto funciona con la biblioteca GNU C++.
Sin embargo, con STLPort en Solaris, esto no hace lo correcto y conduce a todo tipo de errores bizarros de corrupción de memoria. Si en cambio hago
std::allocator_interface<std::allocator<T> > alloc_;
entonces todo está funcionando como debería.
¿Cuál es la forma correcta de usar stl :: allocator? La versión de STLPort/Solaris no compila con g ++, pero es g ++ ¿verdad?
No hay nada llamado 'allocator_interface' en la biblioteca estándar. – AraK