如何在 g++ 6.2.0 和 -std=c++17 中包含 C++ 17 标头(可选、任意、string_view、变体)

2022-01-23 00:00:00 include g++ c++ header-files c++17

std::optional 在 C++ 17 中,之前是 std::experimental::optional.

std::optional is in C++ 17, where it was std::experimental::optional before.

我尝试使用以下命令编译包含 <optional> 的文件:

I tried compiling a file which included <optional>, with the command:

g++ -std=c++17 <filename>.cpp

(在 Bash 终端中).我收到以下错误:

(in the Bash terminal). I get the following error:

<filename>.cpp:5:20 fatal error: optional: No such file or directory
 #include <optional>
                    ^
compilation terminated

但我可以 #include <experimental/optional> 就好了.

我是否缺少一些头文件?如何包含 optional 标头?

Am I missing some header files? How can I include the optional header?

我也不能包含 <any><string_view><variant>,得到同样的错误.

I also can't include <any>, <string_view> or <variant>, getting the same error.

推荐答案

你不能.

GCC 6.2 对 C++17 的支持是实验性的,它从字面上看,为什么标题是这样排列的.

GCC 6.2's support for C++17 is experimental, which is literally why the headers are arranged like this.

要是他们当初为 std::regex 这样做就好了!这是一份礼物.

If only they'd done this for std::regex back in the day! It's a gift.

https://gcc.gnu.org/projects/cxx-status.html#cxx1z

相关文章