Распределители , используемые в std::list

В классе std::list определены следующие алиасы:

 template <class _Ty, class _Alloc = allocator<_Ty>>
class list {
//...
    using _Rebind_alloc_t = typename 
    allocator_traits<_Alloc>::template rebind_alloc<_Value_type>;
    //распределитель для _Ty
    using _Alty          = _Rebind_alloc_t<_Alloc, _Ty>;
    using _Alty_traits   = allocator_traits<_Alty>;
    using _Node 
    = _List_node<_Ty, typename allocator_traits<_Alloc>::void_pointer>;
    //распределитель для _Node 
    using _Alnode        = _Rebind_alloc_t<_Alloc, _Node>;
    using _Alnode_traits = allocator_traits<_Alnode>;
    using _Nodeptr       = typename _Alnode_traits::pointer;
    //...
};

Выходит, что std::list повторно связывает свой распределитель для распределения _Node и для распределения value_type. Разве не достаточно распределять только узлы? Может я неправильно понимаю?...


Ответы (0 шт):