【发布时间】:2014-05-24 18:57:49
【问题描述】:
我的代码 (C++) 需要将 lambda 作为函数指针传递。我的 lambdas 总是:a)返回 void; b) 从不接受任何参数; c) 可以有零个或多个捕获参数。我想将此 lambda 作为函数指针传递,但无法这样做。有什么建议吗?
示例代码:
void fptrfunc(void (*fptr)()){
fptr();
}
int main(){
int x = 2;
fptrfunc([](){cout << "LAMBDA CALL--1"<< endl; }); // Works
fptrfunc([x](){cout << "LAMBDA CALL--2"<< endl; }); // Does not compile
return 0;
}
【问题讨论】:
-
捕获变量的 Lambda 不能转换为函数指针。
-
使用 std::function
可能会解决 C++ 中的问题(但不是 C) -
您是否总是希望对所有 lambda 表达式使用相同的函数指针?
-
能不能给出你无法改变的真实世界界面?不只是你的玩具例子?您可能缺少某些东西。我正在寻找
void*参数或类似的东西。