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()22int main() { 23 return derived().IwantedThisMethod(); 24 } 25