【发布时间】:2018-06-19 00:22:30
【问题描述】:
我正在对 lambda 函数进行快速实验,但无法弄清楚如何在下面声明 testFunc 变量。
一般来说,函数指针可以定义如下:
int (*someFunc)(int, int) = otherFunction;
当对没有任何闭包的 lambda 函数执行此操作时,它可以正常工作:
int (*someFunc)(int) = [](int a) -> int { return 0; };
但是,在尝试通过引用捕获时出现编译器错误:
void (*testFunc)() = [&]() -> void { /* code here */ };
如果我将testfunc 声明为auto,它会起作用,但我很好奇上面的代码有什么问题?
【问题讨论】:
-
你可以使用
std::function<void()>,但要注意开销,它很小但存在。
标签: c++ lambda function-pointers