1 // PR c++/95158 2 // { dg-do run } 3 4 class Base { 5 public: 6 virtual void foo()=0; 7 }; 8 9 template <typename T> 10 class MiddleA : virtual public Base { 11 public: foo()12 virtual void foo() {} 13 }; 14 15 class MiddleB : virtual public Base {}; 16 17 template <typename T> 18 class Derived : public MiddleA<T>, public MiddleB { 19 public: bar()20 void bar() 21 { 22 Derived d; 23 d.foo(); 24 } 25 }; 26 main()27int main() 28 { 29 Derived<void> a; 30 a.bar(); // Instantiate the template 31 } 32