https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87846
Bug ID: 87846 Summary: std::filesystem::create_directories with a path with a trailing slash does not create any directory Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: arnaud02 at users dot sourceforge.net Target Milestone: --- Calling std::filesystem::create_directories with a path with a trailing separator (e.g. "./a/b/") does not create any directory. VS 2017 15.8 creates the desired directories. Is GCC incorrect? >cat fs.cpp // https://developercommunity.visualstudio.com/content/problem/278829/stdfilesystemcreate-directories-returns-false-if-p.html #include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { fs::path d{"./a/b/"}; // bug: d is not created due to trailing slash when built with GCC 8. Works with VS2017.8. fs::create_directories(d); std::cout << std::boolalpha << fs::exists(d) << ' ' << fs::is_directory(d) << '\n'; for (auto const& e : fs::recursive_directory_iterator(".")) std::cout << "In current_path: " << e.path() << '\n'; } >g++ -std=c++17 fs.cpp -lstdc++fs >./a.out false false In current_path: "./a.out" In current_path: "./fs.cpp" >gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/buildarea/opt/gcc/gcc-820-rh6/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /tmp/gcc8/gcc-build/srcdir/gcc-8.2.0/configure --prefix=/buildarea/opt/gcc/gcc-820-rh6 --enable-languages=c,c++,fortran --disable-multilib Thread model: posix