template<typename T> class AbstractStack { public: typedef Item T; virtual ~AbstractStack() { } virtual void Push(std::auto_ptr<Item> x) = 0; virtual std::auto_ptr<Item> Pop() = 0; virtual bool IsEmpty() = 0; };