1 // { dg-do run } 2 class B { 3 public: 4 int bi; bProc(void)5 void bProc ( void ) { bi = 39; } 6 }; 7 8 class D : public B { 9 public: 10 int di; dProc(void)11 void dProc (void ){ di = 42; } 12 }; 13 14 typedef void (B::*BPROC)(void); 15 typedef void (D::*DPROC)(void); 16 17 union AFX_PMSG { 18 public: 19 AFX_PMSG()20 AFX_PMSG () {} AFX_PMSG(BPROC bpr)21 AFX_PMSG ( BPROC bpr ) { bfn = bpr ; } 22 BPROC()23 operator BPROC() { return bfn; } 24 25 BPROC bfn; 26 DPROC dfn; 27 }; 28 29 main(int argc,char * argv[])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