¿C ++ 0x admitirá __stdcall o lambdas externas de captura de "C"?
Ayer estaba pensando si sería posible usar la conveniencia de las funciones lambda de C ++ 0x para escribir devoluciones de llamada para las funciones API de Windows.
Por ejemplo, ¿qué pasaría si quisiera usar una lambda comoEnumChildProc
conEnumChildWindows
? Algo como:
EnumChildWindows(hTrayWnd, CALLBACK [](HWND hWnd, LPARAM lParam) {
// ...
return static_cast<BOOL>(TRUE); // continue enumerating
}, reinterpret_cast<LPARAM>(&myData));
Otro uso sería escribirextern "C"
devoluciones de llamada para rutinas C. P.ej.:
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;
}));
es posible?
Puedo entender que las lambdas que capturan variables nunca serán compatibles con C, pero al menos me parece posible quecapturar nada Las lambdas pueden ser compatibles.