Будет ли C ++ 0x поддерживать __stdcall или extern «C» лямбда без захвата?
Вчера я думал о том, можно ли будет использовать удобство лямбда-функций C ++ 0x для написания обратных вызовов для функций Windows API.
Например, что если я хочу использовать лямбду в качествеEnumChildProc
сEnumChildWindows
? Что-то вроде:
EnumChildWindows(hTrayWnd, CALLBACK [](HWND hWnd, LPARAM lParam) {
// ...
return static_cast<BOOL>(TRUE); // continue enumerating
}, reinterpret_cast<LPARAM>(&myData));
Другое использование будет писатьextern "C"
обратные вызовы для подпрограмм Си. Например.:
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;
}));
Это возможно?
Я могу понять, что лямбды, которые захватывают переменные, никогда не будут совместимы с C, но мне, по крайней мере, кажется возможнымне снимаемое ничего лямбды могут быть совместимы.