avi*_*ase 2 c++ clang stdoptional
我想使用 C++17std::optional但它似乎在 clang 中不存在:
> cat test.cxx
#include <optional>
int main(int, char **) {
return 0;
}
> $CXX --version | head -n1
clang version 6.0.0 (trunk 317775)
> $CXX -std=c++17 test.cxx
test.cxx:1:10: fatal error: 'optional' file not found
#include <optional>
^~~~~~~~~~
1 error generated.
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我使用的是一个相当新版本的 clang,据我所知,clang 6 应该具有完整的 C++17 支持。乍一看,这似乎是一个 clang 问题,特别是因为包含<experimental/optional>工作正常,但也许是我遗漏了一些东西。你有什么想法?
谢谢
正如评论中指出的,Clang 可能默认使用系统的 libstdc++ 标头,而您的系统的 libstdc++ 太旧,无法支持 C++17。
安装较新的 GCC(附带较新的 libstdc++),然后告诉 Clang 如何使用该--gcc-toolchain=/path/to/new/gcc选项找到它,或者与 Clang 一起安装 libc++ 并告诉它使用该-stdlib=libc++选项的 libc++。
如果您选择安装较新的 libstdc++,那么您至少需要 GCC 7.1,它是第一个提供<optional>.
| 归档时间: |
|
| 查看次数: |
4494 次 |
| 最近记录: |