我不能用 -std=c++17 编译,我得到:
error: invalid value 'c++17' in '-std=c++17'
但是我更新了 Xcode 和 clang。
我的 Clang 版本是:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin`
我加载了最新的标题,比如可选的,我必须这样做
#include <experimental/optional>
代替
#include <optional>
原文由 Max0u 发布,翻译遵循 CC BY-SA 4.0 许可协议
Xcode 自带完整的工具链,包括头文件和实际的编译器。
Apple LLVM version 9.0.0 (clang-900.0.39.2)
(Xcode 9.2 附带)不支持使用标志-std=c++17
因为它太旧了。可选标头仅包含在文件夹experimental/
下。这就是为什么你需要#include <experimental/optional>
为了使用 Xcode 9.2 附带的编译器编译支持 c++17 的程序,您需要使用
-std=c++1z
标志。Xcode 9.3 将附带
Apple LLVM version 9.1.0 (clang-902.0.30)
支持-std=c++17
标志。但是optional
标头截至今天仍在experimental/
子目录下。这可能会在测试期间发生变化。