如何将lambda参数保留在内存中?

时间:2019-02-21 16:44:21

标签: c++ lambda

我目前有这个测试用例:

std::function<void(void)> getFunc(int n) {
  return [&]() { std::cout << "N: " << n << std::endl; };
}

int main() {
  auto func = getFunc(3);
  func();
  return 0;
}

从最初的阅读来看,人们期望会打印N: 3,但是问题在于,一旦函数getter超出范围,n变量也会超出范围,从而导致不确定的行为。 (在我的特定情况下,我得到了输出N: 32766。)如何解决这个问题,并实际上将n的值注入到我的lambda中以供以后使用?

0 个答案:

没有答案