C ++ ::捕获Lambda

时间:2018-12-06 07:53:03

标签: c++

我有一个接受如下函数指针的函数:

void invoke(void (*fnCallback)(int data)) { ... }

我还有一个类方法,我想从中调用此函数,并将回调作为lambda传递:

void Class::testInvoke() {
  auto f = [](int data) -> void { data = data + 1; };
  invoke(f);
}

这可行,但是如果我尝试使用lambda捕获,则代码无法编译:

void Class::testInvoke() {
  int value = 1;
  auto f = [=](int data) -> void { data = data + value; };
  invoke(f);
}

在第二种情况下,如果我注释掉invoke(f)行,则代码将编译。我究竟做错了什么?我该如何更改invoke的签名,使其接受捕获的lambda?

0 个答案:

没有答案