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。