1// { dg-do compile } 2 3class A 4{ 5public: 6 A (); 7}; 8class B 9{ 10public: 11 B (int); 12 operator void *() { return m_fn1 () ? 0 : this; } 13 int m_fn1 (); 14}; 15typedef int jmp_buf[]; 16struct C 17{ 18 jmp_buf cond_; 19}; 20class F 21{ 22 C what_; 23 bool m_fn2 (); 24}; 25int _setjmp (int[]); 26void longjmp (); 27class D 28{ 29public: 30 D () { longjmp (); } 31}; 32bool 33F::m_fn2 () 34{ 35 B a (0); 36 if (a) 37 if (_setjmp (what_.cond_)) 38 return 0; 39 else 40 D (); 41 A b; 42} 43