J'essaie d'écrire une classe de conteneur qui utilise des allocateurs STL. Ce que je fais actuellement est d'avoir un députéComment utiliser std :: allocator dans ma propre classe de conteneur
std::allocator<T> alloc_;
(ce sera plus tard templated afin que l'utilisateur peut choisir un allocateur différent), puis appelez
T* ptr = alloc_.allocate(1,0);
pour obtenir un pointeur vers un nouveau objet 'T' alloué (et utilisé alloc_.construct pour appeler le constructeur, voir la réponse ci-dessous). Cela fonctionne avec la bibliothèque GNU C++. Cependant, avec STLPort sur Solaris, cela ne réussit pas à faire le bon choix et conduit à toutes sortes d'erreurs de corruption de mémoire bizarres. Si je fais à la place
std::allocator_interface<std::allocator<T> > alloc_;
puis tout fonctionne comme il se doit.
Quelle est la bonne façon d'utiliser stl :: allocator? La version STLPort/Solaris ne peut pas être compilée avec g ++, mais g ++ est-il correct?
Il n'y a rien appelé 'allocator_interface' dans la bibliothèque standard. – AraK