小编Con*_*ney的帖子

当我想要捕捉外面的东西时,无法编译lambda

当我想要捕获lambda之外的东西时,会发生编译错误.这是代码:

int caller(int (*callback)(void *arg), void * arg = NULL) {
  return callback(arg);
}

int main(int argc, char **argv) {

  const char *str = "world";
  caller([&](void *arg) {
      printf("hello %s\n", str);
      return 0;
  }, NULL);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是如果我printf像这样更改内部lambda(不使用外部变量),这是可以的:

printf("hello %s\n", str)
Run Code Online (Sandbox Code Playgroud)

我尝试使用apple g ++ 4.2和gnu g ++ 4.6编译源代码

c++ lambda compilation c++11

3
推荐指数
1
解决办法
176
查看次数

标签 统计

c++ ×1

c++11 ×1

compilation ×1

lambda ×1