1 // { dg-do compile } 2 int a; 3 class d 4 { 5 public: 6 virtual unsigned c (); 7 }; 8 class e : public d 9 { 10 }; 11 class i 12 { 13 void h (); 14 15 public: 16 void 17 operator= (e *f) 18 { 19 j<int>::c (f); 20 h (); 21 } 22 template <class> struct j 23 { 24 static void cj25 c (e *g) 26 { 27 g->c (); 28 } 29 }; 30 }; 31 class k; 32 class l 33 { 34 public: 35 l (int); 36 k *operator-> (); 37 }; 38 class m final : e 39 { 40 unsigned c (); 41 }; 42 class k 43 { 44 public: 45 virtual int o (e *) = 0; 46 }; 47 class H : d, k 48 { 49 int o (e *); 50 i n; 51 }; 52 unsigned c()53m::c () 54 { 55 l b = 0; 56 b->o (this); 57 return a; 58 } 59 int o(e * p)60H::o (e *p) 61 { 62 n = p; 63 return a; 64 } 65 66 67