簡體   English   中英

如何在帶有 -std=c++17 的 g++ 6.2.0 中包含 C++ 17 頭文件(可選,任何,string_view,變體)

[英]How to include C++ 17 headers with g++ 6.2.0 with -std=c++17 (optional, any, string_view, variant)

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

我嘗試使用以下命令編譯一個包含<optional>的文件:

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

(在 Bash 終端中)。 我收到以下錯誤:

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

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

我是否缺少一些頭文件? 如何包含optional標題?

我也不能包含<any><string_view><variant> ,得到同樣的錯誤。

你不能。

GCC 6.2 對 C++17 的支持是實驗性的,這就是為什么標題是這樣排列的。

如果他們在當天為std::regex做到這一點就好了! 這是一份禮物。

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

當遇到這樣的情況時,我做了一個hacky的解決方法:

#if defined(__GNUC__) && __GNUC__ < 7
# include <experimental/string_view>
# define string_view experimental::string_view
#else
# include <string_view>
#endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM