Распределители , используемые в 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. Разве не достаточно распределять только узлы? Может я неправильно понимаю?...