1 // { dg-do run } 2 // { dg-options "-w" } 3 4 class A { 5 public: ~A()6 virtual ~A(){}; type(void)7 virtual int type(void) { 8 return -1; 9 } 10 }; 11 12 class B : public A { 13 public: ~B()14 virtual ~B(){}; 15 }; 16 17 18 class C0 : public B, public virtual A { 19 public: type(void)20 virtual int type(void) { 21 return 0; 22 } 23 }; 24 25 class C1 : public C0 26 { 27 public: type(void)28 virtual int type(void) { 29 return 1; 30 } 31 }; 32 33 class C2 : public C0 { 34 public: type(void)35 virtual int type(void) { 36 return 2; 37 } 38 }; 39 main()40main() { 41 C1 *one = new C1; 42 43 if (one->type() != 1) 44 return 1; 45 } 46