据我所知,我至少有以下三种方法来声明一个接受闭包的函数:
例如
void FooCopyLambda(std::function<void()> f) {
// ...
f();
// ...
}
void FooRefLambda(const std::function<void()> &f) {
// ...
f();
// ...
}
void FooMoveLambda(std::function<void()> &&f) {
// ...
f();
// ...
}
在This question中,人们讨论了如何通过引用传递。但是在这里我也想知道,我应该参考一下吗?还是我应该通过价值或移动来传递它?
将lambda作为参数传递的正确方法是什么?为什么?