class foo { public: foo () {} virtual ~foo() {} virtual void m() {} }; template class bar : public foo { public: bar () {} }; void f1 (bar *p) { p->m(); } int main () { return 0; }