C++ 在没有boost和c+的情况下安全地执行类型擦除+;0x

C++ 在没有boost和c+的情况下安全地执行类型擦除+;0x,c++,inheritance,containers,auto-ptr,C++,Inheritance,Containers,Auto Ptr,假设我有一个模板类 template<class T> class A; template<> class A<int> { public: void print(){ std::cout << "I am an int !" << std::endl; } }; template<> class A<double> { public: void print

假设我有一个模板类

template<class T>
class A;

template<>
class A<int>
{
    public:
         void print(){ std::cout << "I am an int !" << std::endl; }
};

template<>
class A<double>
{
    public:
         void print(){ std::cout << "I am a double !" << std::endl; }
};
模板
甲级;
模板
甲级
{
公众:

void print(){std::cout看一下boost/any.hpp。我看了。

这个问题的唯一答案是“滚动boost中已经存在的您自己的类”,无论您喜欢
ptr\u vector
shared\u ptr
any
,等等。它们已经涵盖了这方面的所有基础。选择您最喜欢的并推出您自己的实现,然后使用它


编辑:一位评论者提到了TR1。好消息。TR1中有
共享的\u ptr

没有Boost?好吧,我想重新发明Boost中已经存在的东西…请注意TR1不一定是C++0x。如果出现错误,请使用新的(可能会导致内存泄漏和/或异常不安全)你的问题与类型擦除无关,而与智能指针无关。