我使用的是 GCC 7.4.0 和 clang 6.0.0 ,它们似乎都在{{ 1}}。
由于我正在处理的项目需要std :: filesystem,所以我想知道其中的哪个版本(主要+次要版本)支持它,以及在<experimental/filesystem>
和{{ 1}}。
这样我就可以正确处理<experimental/filesystem>
和<filesystem>
,并抛出一些#include
以避免尝试使用不受支持的编译器版本编译项目< / p>
答案 0 :(得分:1)
我注意到GCC是一个独立于标准库(https://gcc.gnu.org/onlinedocs/gcc/Standard-Libraries.html)的编译器系统。
也就是说,GCC 8.0包含std::filesystem
库-但是您的项目必须处于C ++ 17模式才能使用它。
表3.9,“ C ++ 2020库标题”
any
charconv
execution
filesystem
memory_resource
optional
string_view
variant
显示C ++ 17包含文件。它们在C ++ 17编译模式下可用,即
-std=c++17
或-std=gnu++17
。在较早的模式下包含这些标头不会导致编译错误,但不会定义任何内容。除非下文另有说明,否则它们也可以在以后的模式(C ++ 20等)中使用。
w.r.t。您的具体问题:
感谢您的信息。但是
std::experimental::filesystem
(我现在正在使用的是什么)是什么时候引入的呢?
G ++的发行历史记录说它已包含在8.x版中(加粗强调):
https://gcc.gnu.org/gcc-8/changes.html
改进了对C ++ 17的实验支持,包括以下功能:
- 推导指南支持类模板参数推导。
std::filesystem
实施。std::char_traits<char>
和std::char_traits<wchar_t>
在常量表达式中可用。std::to_chars
和std::from_chars
(仅适用于整数,不适用于浮点类型)。