やっぱ変ですかね?

template <class T> class obj_pool
{
public:
T *Alloc();
void Dealloc(T *p);
private:
list<T *> objs;
};

こんな感じでオブジェクトを使いまわそうかと思ったんですが
どの派生型でもDeallocで格納できてしまうので
取り出すときに区別がつかなくなってしまいます