我在Mac上学习一些C ++,当我到达Lambda时,达到lambda时出现编译器错误(预期表达式):apply(^ HERE ^ []。
void apply(void (*f)(int)) {
f(10);
}
void output() {
apply([](int data) {
printf("data: %d\n", data);
});
}
输入" g ++ -v"在终端我得到:
配置: --prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM 9.0.0版(clang-900.0.37)目标:x86_64-apple-darwin17.0.0线程模型:posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
我的Lambda代码是错误的还是我的编译器版本过时了?我保持Xcode更新(现在版本9)所以我希望有一个比2011年更新的C ++版本。
编辑:
解决方案是使用以下命令进行编译。 g ++默认情况下并不支持c ++ 11。
clang++ -std=c++11 -stdlib=libc++