Khi tôi cố gắng biên dịch sau đây trên MinGW 4.6.2EnumChildWindows và lambda
EnumChildWindows(hwnd, [](HWND, LPARAM) -> BOOL { return TRUE; }, 0);
tôi nhận được
error: cannot convert '<lambda(HWND, LPARAM)>'
to 'ENUMWINDOWSPROC {aka int (*)(HWND__*,long int)}'
for argument '2' to 'BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM)'
Tôi tuyên bố lambda không đúng cách, hoặc là này đơn giản là không đi làm? Định nghĩa MS của callback là
BOOL CALLBACK EnumChildProc(
__in HWND hwnd,
__in LPARAM lParam
);
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633493%28v=vs.85%29.aspx
là quy ước gọi gây ra vấn đề?
http://stackoverflow.com/questions/2935201/will-c0x-support-stdcall-or-extern-c-capture-nothing-lambdas có liên quan. –