std::list由分配器类型参数化,它可能会重新绑定该类型以分配列表节点而不是Ts。那么它对传递给构造函数的分配器类型的对象做了什么?
template <class T, class Alloc = std::allocator<T>>
class list
{
class node { ... T element; ... };
using real_alloc =
typename std::allocator_traits<Alloc>::template rebind_alloc<node>;
real_alloc m_allocator;
public:
list(const Alloc&);
};
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我们需要初始化m_allocator一个节点分配器,但是构造函数被赋予了一个T分配器。我们是直接将T分配器扔在地板上,还是以某种方式使用它?