1 // { dg-do run  }
2 class base {
3 public:
~base()4   virtual ~base() {}
5   virtual void m1() = 0;
6   virtual void m2() = 0;
7 };
8 
9 class intermediate : public virtual base {
10 public:
~intermediate()11   virtual ~intermediate() {}
m1()12   virtual void m1() {}
m2()13   virtual void m2() {}
14 };
15 
16 class derived : public intermediate {
17 public:
IwantedThisMethod()18   virtual int IwantedThisMethod() { return 0; }
ButIgotThisOne()19   virtual int ButIgotThisOne() { return 1; }
20 };
21 
main()22 int main() {
23   return derived().IwantedThisMethod();
24 }
25