我在网络上阅读了许多教程,它们解释了如何使用标准库(例如std::find
)与Lambda表达式。这些教程非常有趣,但我找不到任何一个解释如何为自己的函数使用Lambda表达式。
例如:
int main()
{
int test = 5;
LambdaTest([&](int a) { test += a; });
return EXIT_SUCCESS;
}
我应该如何声明 LambdaTest
?它的第一个参数的类型是什么?然后,我该如何调用传递给它的匿名函数 - 例如 - 将 "10" 作为其参数传递给它?
std::function
(不是引用),你会复制f
。然而,我不确定lambda/闭包在所引用的对象超出作用域时如何处理引用,可能是未定义行为。 @FredOverflow:我的理解是,特别是在包装lambda时,std::function
不是一个简单的对象。最好引用它以避免不必要的复制。 - user319799