为什么我不能在g ++ 4.9.2中使用<experimental/filesystem>?

Loo*_*oom 25 c++ filesystems g++ libstdc++ c++11

我正在尝试使用文件系统.我有-std=c++11 -std=c++1y我的CMakeLists.txt.GCC版本是4.9.2.但是,我有一个错误:

/home/loom/MyProject/src/main.cpp:5:35: fatal error: experimental/filesystem: No such file or directory
 #include <experimental/filesystem>
                                   ^
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

什么是正确的使用方式std::experimental::filesystem

Sha*_*our 26

如果我们查看libstdc ++状态,我们会看到他们确实支持文件系统TS:

纸| 标题| 状态

........

N4100 | 文件系统| ÿ

但它说:

此页面描述了主线GCC SVN中的C++ 14和库TS支持,而不是任何特定版本.

并且在Wandbox上尝试这个,看起来这个库只能在最新的开发分支上使用6.0,除此之外我找不到更多细节.

更新

来自Jonathan Wakely的更新:

它现在也可以在Subversion的gcc-5分支中使用,并将在今年晚些时候的GCC 5.3版本中包含.

因此,Jonathan Wakely 在这里答案也需要编译-lstdc++fs.这在gcc文档链接部分中介绍:

GCC 5.3包括由技术规范ISO/IEC TS 18822:2015定义的文件系统库的实现.因为这是一个实验性的库扩展,不是C++标准的一部分,所以它是在一个单独的库libstdc ++ fs.a中实现的,并且它没有共享库.要使用该库,您应该包含并链接-lstdc ++ fs.在非POSIX平台上,库实现是不完整的,特别是Windows支持是基本的.

由于Filesystem库的实验性质,ABI稳定性和向后兼容性的通常保证不适用于它.无法保证任何标头中的组件在不同的GCC版本之间保持兼容.

见表3.1.C++命令选项.