| // { dg-do assemble } |
| // prms-id: 7626 |
| |
| int fail; |
| |
| typedef unsigned int UINT; |
| |
| class CObject{}; |
| |
| class CCmdTarget : public CObject { |
| }; |
| |
| typedef void (CCmdTarget::*AFX_PMSG)(void); |
| |
| struct AFX_MSGMAP_ENTRY { |
| AFX_PMSG pfn; |
| }; |
| |
| class CWnd : public CCmdTarget { |
| public: |
| void OnMyMsg() { fail = 1; } // If this one is called, something is wrong. |
| static AFX_MSGMAP_ENTRY _messageEntries[]; |
| }; |
| |
| typedef void (CWnd::*AFX_PMSGW)(void); |
| |
| class CDialog : public CWnd |
| { |
| public: |
| void OnMyMsg() { } |
| static AFX_MSGMAP_ENTRY _messageEntries[]; |
| }; |
| |
| AFX_MSGMAP_ENTRY CDialog ::_messageEntries[] = { |
| { (AFX_PMSG)(AFX_PMSGW)(void (CWnd::*)())&CDialog::OnMyMsg }, |
| { (AFX_PMSG)0 } |
| }; |
| |
| int main() { |
| CDialog d; |
| (d.*((CDialog::_messageEntries)[0]).pfn)(); // This should call CDialog::OnMyMsg |
| return fail; |
| } |