The Filesystem TS is nothing to do with C++1z support, it is a completely separate specification not part of the C++1z working draft. GCC's implementation (in GCC 5.3 and later) is even available in C++11 mode.
You just need to link with -lstdc++fs
to use it.
(The relevant library, libstdc++fs.a
, is a static library, so as with any static library it should come after any objects that depend on it in the linker command.)
Update Nov 2017: as well as the Filesystem TS, GCC 8.x also has an implementation of the C++17 Filesystem library, defined in <filesystem>
and in namespace std::filesystem
(N.B. no "experimental" in those names) when using -std=gnu++17
or -std=c++17
. GCC's C++17 support is not complete or stable yet, and until it's considered ready for prime time use you also need to link to -lstdc++fs
for the C++17 Filesystem features.
Update Jan 2019: starting with GCC 9, the C++17 std::filesystem
components can be used without -lstdc++fs
(but you still need that library for std::experimental::filesystem
).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…