// { dg-do run } extern "C" void abort(); class X { public: virtual int f() const = 0; }; template class Y: public X { public: virtual int f() const; }; template int Y::f() const { abort(); return 0; } template <> int Y::f() const; template <> int Y::f() const { return 0; } int main() { Y yb; yb.f(); }