class foo { public: foo () {} virtual ~foo() {} virtual void m() {} }; template class bar : public foo { public: bar () {} }; void f2 (bar *p) { p->m(); }