class A { public: }; template class B: public virtual A { public: B (); ~B (); }; template B::B () { } template B::~B () { } int main () { B ab; return 0; }