当我想要捕获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编译源代码