Использование rebind

Допустим есть шаблонный класс принимающий в качестве параметра и в качестве одного из аргументов конструктора алокатор
template < class T, class Alloc = std::allocator<T> >class MyContainer{    Alloc a_;    ....    typedef Alloc allocator_type;    MyContainer( allocator_type& a = allocator_type() ) : a_(a) //инициализируем алокатор...    {}
теперь представим, что существуе некоторый вложеный класс Node
    class Node    {        ...    };
и нам нужно выделять память и под этот класс, для этого существует такая штука как rebind
    typedef template Alloc::rebind<Node>::other node_allocator_type;    Node* create_node()    {        node_allocator_type na_(a_);//<<<копирование алокатора        Node* ptr = na_.allocate(1);        ....    }
вопрос собственно в том, правильно ли я поступаю создавая алокатор для другого типа с помощью ребинд-а и копируя егоДобавлено через 1 минуту и 35 секундили лучше передавать несколько аллокаторов через параметры?
2 ответа

вообще, насколько правильно с точки зрения дизайна приложения, передавать в качестве параметра в шаблон и в конструктор allocator, где Т - первый параметр шаблона, если он используется только для того, что-бы создать алокаторы для нужных мне типов, о которых пользователю класса знать не стоит?


Я ничего противозаконного не вижу. Хотя с аллокаторами не работал.