150565Sphk// { dg-do run  }
250565Sphkclass B {
350565Sphkpublic:
450565Sphk    int bi;
550565Sphk    void bProc ( void ) { bi = 39; }
650565Sphk  };
750565Sphk
850565Sphkclass D : public B {
950565Sphkpublic:
1050565Sphk    int di;
1150565Sphk    void dProc (void ){ di = 42; }
1250565Sphk  };
1350565Sphk
1450565Sphktypedef void (B::*BPROC)(void);
1550565Sphktypedef void (D::*DPROC)(void);
1651111Sjulian
1760041Sphkunion AFX_PMSG {
1850565Sphkpublic:
1950565Sphk
2050565Sphk  AFX_PMSG () {}
2161953Snbm  AFX_PMSG ( BPROC bpr ) { bfn = bpr ; }
2250728Sphk
2364880Sphk  operator BPROC() { return bfn; }
2464880Sphk
2569774Sphk  BPROC bfn;
2650565Sphk  DPROC dfn;
2750565Sphk};
2850565Sphk
2950565Sphk
3050565Sphkint main(int argc, char *argv[]) {
3150565Sphk  B b;
3261717Sphk  D d;
3361717Sphk
3464880Sphk  BPROC    bpr = &B::bProc;
3562617Simp  AFX_PMSG pmsg(bpr);
3664880Sphk
3764880Sphk  BPROC ppr = pmsg;
3864880Sphk
3964880Sphk  return 0;
4064880Sphk}
4164880Sphk