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