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[])30 int 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