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