В C ++ 11 и более поздних версиях преобразование лямбда-выражения без захваченных переменных очень просто, но для лямбда-выражений с захваченными переменными, чтобы сделать это правильно, требуется динамическая c генерация кода согласно этому парню answer .
Это то, что, по моему мнению, должно генерироваться динамически. (Обратите внимание, что код здесь указывает на мою желаемую семантику, а не на какой-либо реальный код)
UserData *userdata;
api_return_value callback(api_data arg) {
return customized_callback(arg, userdata);
}
И я бы сгенерировал это, чтобы я мог связать динамически сгенерированный код с соответствующим обратным вызовом указателя функции, определенным в некотором API
api_return_value (*callback) (api_data);
Есть ли достаточно чистый и переносимый способ go об этом, используя что-то вроде LLVM или NativeJIT? Я застрял, используя C API без указателя пользовательских данных, так что, похоже, это моя единственная альтернатива.