带捕获的lambda转换为函数指针
#include <iostream>
void foo(void (*fn)())
{
fn();
}
using voidfun = void(*)();
template <typename F>
voidfun lambda2func(F lambda)
{
static auto lambdabak = lambda;
return []()
{
lambdabak();
};
}
int main()
{
int num = 111; // 初始化为“111”
void (*f)() = lambda2func([&num]()
{
num = 1234;
});
foo(f);
printf("%d",num); // 成功修改为“1234
return 0;
}