Передача замыкания из Cython в C++ ⇐ C++
-
Гость
Передача замыкания из Cython в C++
У меня есть функция C++, которая принимает обратный вызов, например:
void func(std::function обратный вызов) { ... } Я хочу вызвать эту функцию из Cython, задав ей замыкание, т. е. то, что я бы сделал с лямбда-выражением, если бы вызывал ее из C++. Если бы это была функция C, у нее были бы дополнительные аргументы void*:
typedef void(*callback_t)(int, int, void*); void func (callback_t обратный вызов, void *user_data) { обратный вызов (1, 2, user_data); } а затем я бы просто передал PyObject* как user_data (здесь есть более подробный пример).
Есть ли способ сделать это на языке C++, не прибегая к явному использованию user_data?
У меня есть функция C++, которая принимает обратный вызов, например:
void func(std::function обратный вызов) { ... } Я хочу вызвать эту функцию из Cython, задав ей замыкание, т. е. то, что я бы сделал с лямбда-выражением, если бы вызывал ее из C++. Если бы это была функция C, у нее были бы дополнительные аргументы void*:
typedef void(*callback_t)(int, int, void*); void func (callback_t обратный вызов, void *user_data) { обратный вызов (1, 2, user_data); } а затем я бы просто передал PyObject* как user_data (здесь есть более подробный пример).
Есть ли способ сделать это на языке C++, не прибегая к явному использованию user_data?
Мобильная версия