#include <iostream.h>

class P {
 public:
   P() { cout << "P::P" << endl; }
}; // P

void fun4P(P*) { cout << "fun4P" << endl; }

template<class T, void (*funT)(T*)> 
class TC
{
 public:
   TC() : _pT(new T) {}
   ~TC() {fun4P(_pT);}
 private:
   T* _pT;
}; 

int main(int, char**) {
   typedef TC<P, &fun4P> ProblemIsHereCls;
   ProblemIsHereCls Problem;
   return 0;
}
