哪些版本的GCC和clang支持std::filesystem/std::experimental::filesyste



我使用的是GCC 7.4.0clang 6.0.0,它们似乎都在<experimental/filesystem>中实现了文件系统

由于我正在从事的项目需要 std::filesystem,我想知道其中哪些版本(主要 + 次要(支持它,以及它在哪些版本中以<experimental/filesystem><filesystem>实现。

这样我就可以正确处理#includes 和namespaces,并加入一些#if以避免尝试使用不受支持的编译器版本编译项目

我注意到GCC是一个与标准库(https://gcc.gnu.org/onlinedocs/gcc/Standard-Libraries.html(分开且不同的编译器系统。

也就是说,GCC 8.0 包含std::filesystem库 - 但您的项目需要处于 C++17 模式才能使用它。

https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_headers.html#manual.intro.using.headers.cheaders

表 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_charsstd::from_chars(仅适用于整数,不适用于浮点类型(。

相关内容

  • 没有找到相关文章

最新更新