Wird C ++ 0x __stdcall oder externes "C" Capture-nothing Lambdas unterstützen?
Gestern habe ich darüber nachgedacht, ob es möglich sein würde, die Bequemlichkeit von C ++ 0x Lambda-Funktionen zum Schreiben von Rückrufen für Windows-API-Funktionen zu nutzen.
Zum Beispiel, was ist, wenn ich ein Lambda als @ verwenden wollEnumChildProc
mitEnumChildWindows
? Etwas wie
EnumChildWindows(hTrayWnd, CALLBACK [](HWND hWnd, LPARAM lParam) {
// ...
return static_cast<BOOL>(TRUE); // continue enumerating
}, reinterpret_cast<LPARAM>(&myData));
Eine andere Verwendung wäre zu schreibenextern "C"
Rückrufe für C-Routinen. Z.B.
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;
}));
Ist das möglich
ch kann verstehen, dass Lambdas, die Variablen erfassen, niemals mit C kompatibel sind, aber es scheint mir zumindest möglich, dass capture-nothing Lambdas können kompatibel sein.