當我嘗試編譯MingW平臺上4.6.2EnumChildWindows和lambda
EnumChildWindows(hwnd, [](HWND, LPARAM) -> BOOL { return TRUE; }, 0);
下面我得到
error: cannot convert '<lambda(HWND, LPARAM)>'
to 'ENUMWINDOWSPROC {aka int (*)(HWND__*,long int)}'
for argument '2' to 'BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM)'
難道我宣佈拉姆達不正確,或者這根本行不通?回調的MS定義是
BOOL CALLBACK EnumChildProc(
__in HWND hwnd,
__in LPARAM lParam
);
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633493%28v=vs.85%29.aspx
是調用約定導致了問題?
http://stackoverflow.com/questions/2935201/will-c0x-support-stdcall-or-extern-c-capture-nothing-lambdas是相關的。 –