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