在C ++中将lambda作为参数传递的正确方法是什么

时间:2018-11-04 08:55:18

标签: c++ c++11 lambda closures

据我所知,我至少有以下三种方法来声明一个接受闭包的函数:

  1. 通过复制
  2. 通过引用
  3. 移动

例如

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作为参数传递的正确方法是什么?为什么?

0 个答案:

没有答案