O C ++ 0x suportará __stdcall ou lambdas externas de captura-C “nada”?
Ontem, eu estava pensando se seria possível usar a conveniência das funções lambda C ++ 0x para escrever retornos de chamada para funções da API do Windows.
Por exemplo, e se eu quisesse usar um lambda como umEnumChildProc
comEnumChildWindows
? Algo como:
EnumChildWindows(hTrayWnd, CALLBACK [](HWND hWnd, LPARAM lParam) {
// ...
return static_cast<BOOL>(TRUE); // continue enumerating
}, reinterpret_cast<LPARAM>(&myData));
Outro uso seria escreverextern "C"
retornos de chamada para rotinas C. Por exemplo.:
my_class *pRes = static_cast<my_class*>(bsearch(&key, myClassObjectsArr, myClassObjectsArr_size, sizeof(my_class), extern "C" [](const void *pV1, const void *pV2) {
const my_class& o1 = *static_cast<const my_class*>(pV1);
const my_class& o2 = *static_cast<const my_class*>(pV2);
int res;
// ...
return res;
}));
Isso é possível?
Entendo que lambdas que capturam variáveis nunca serão compatíveis com C, mas pelo menos me parece possível quecapturar-nada lambdas podem ser compatíveis.