// PR c++/95158 // { dg-do run } class Base { public: virtual void foo()=0; }; template class MiddleA : virtual public Base { public: virtual void foo() {} }; class MiddleB : virtual public Base {}; template class Derived : public MiddleA, public MiddleB { public: void bar() { Derived d; d.foo(); } }; int main() { Derived a; a.bar(); // Instantiate the template }