小编aar*_*nfu的帖子

将 lambda 表达式传递给模板化调用函数时,没有匹配的函数编译错误?

代码:

#include <iostream>

template <class FunctorType>
void caller(const FunctorType& func) {
  func();
}

int main() {
  double data[5] = {5., 0., 0., 0., 0.};
  auto peek_data = [data]() { std::cout << data[0] << std::endl; };
  auto change_data = [data]() mutable { data[0] = 4.2; };

  caller(peek_data);    // This works
  caller(change_data);  // This doesn't
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我用 编译它clang++ -std=c++11 mutable_lambda.cpp,我得到了 error: no matching function for call to object of type 'const (lambda at mutable_lambda.cpp:8:22)'

问题:为什么通过可变副本捕获传递第二个 lambda …

c++ lambda templates capture

7
推荐指数
1
解决办法
307
查看次数

标签 统计

c++ ×1

capture ×1

lambda ×1

templates ×1