// { dg-do run } #include extern "C" int printf(const char *, ...); class Subscriptor { public: Subscriptor() { counter = 1;} virtual ~Subscriptor() { counter--; assert(counter == 0); } private: static int counter; }; int Subscriptor::counter; template class Polynomial : public Subscriptor { }; class LagrangeEquidistant: public Polynomial { }; template inline void _MyDestroy(_Tp* __pointer) { __pointer->~_Tp(); } int main() { LagrangeEquidistant * s1 = new LagrangeEquidistant; _MyDestroy(s1); return 0; }