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()27 int main()
28 {
29   Derived<void> a;
30   a.bar(); // Instantiate the template
31 }
32