1// { dg-do run } 2class B { 3public: 4 int bi; 5 void bProc ( void ) { bi = 39; } 6 }; 7 8class D : public B { 9public: 10 int di; 11 void dProc (void ){ di = 42; } 12 }; 13 14typedef void (B::*BPROC)(void); 15typedef void (D::*DPROC)(void); 16 17union AFX_PMSG { 18public: 19 20 AFX_PMSG () {}; 21 AFX_PMSG ( BPROC bpr ) { bfn = bpr ; } 22 23 operator BPROC() { return bfn; } 24 25 BPROC bfn; 26 DPROC dfn; 27}; 28 29 30int main(int argc, char *argv[]) { 31 B b; 32 D d; 33 34 BPROC bpr = &B::bProc; 35 AFX_PMSG pmsg(bpr); 36 37 BPROC ppr = pmsg; 38 39 return 0; 40} 41