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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage