std::allocator
的construct
和destroy
成员函数根据要构造的元素的类型进行参数化:
template<class T>
class allocator
{
public:
typedef T value_type;
typedef T* pointer;
template<class U, class... Args>
void construct(U *p, Args&&... args);
template<class U>
void destroy(U *p);
...
};
这样做的理由是什么?为什么他们不接受value_type*
or pointer
?似乎allocator<T>
应该只知道如何构造或销毁类型的对象T
。