【发布时间】:2014-10-22 03:57:58
【问题描述】:
我正在尝试使用捕获 [&] 传递 lambda 函数。存储捕获 lambda 的变量的正确声明是什么? [f2 下面]
// Non-capturing
void (*f1)() = [](){ }; // Works
// All by reference
void (*f2)() = [&](){ }; // Syntax Error
【问题讨论】:
-
自动 f = [&](){...} ?
-
无法将带有捕获的 Lambda 转换为函数指针。
-
请注意,您不是试图通过引用传递 lambda 函数。
-
措辞不好。我的意思是在 lambda ["&" 捕获模式] 中启用引用
-
@RandomClown:如果您需要有或没有捕获的 lambda 的通用类型,请使用
std::function<void()>。它使用类型擦除来存储具有该签名的任何函数对象。