// example5.cpp #include #include #include using namespace std; template< typename T > class Dummy { public: Dummy(const T& data); ~Dummy(); void print() const; private: T* data_; }; template Dummy::Dummy(const T& data) { data_ = new T(data); } template Dummy::~Dummy() { delete data_; } template void Dummy::print() const { cout << "Dummy::print() with type T = " << typeid(T).name() << ", *data_: " << *data_ << endl; } int main() { Dummy d1( std::string("test") ); double x = 1.23; Dummy d2( x ); d1.print(); d2.print(); return 0; }