https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94900
Bug ID: 94900 Summary: filesystem recursive_directory_iterator incorrectly skips entries in case directories can not be read Product: gcc Version: 9.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: tonvandenheuvel at gmail dot com Target Milestone: --- Suppose we have a subdirectory `x` with two other subdirectories `a` and `b`, both unreadable for the current user: $ mkdir -p x/a x/b && chmod 000 x/a x/b Then, the following program will only print one of the two directories: #include <filesystem> #include <iostream> namespace sfs = std::filesystem; int main(int argc, char** argv) { std::error_code ec; for (sfs::recursive_directory_iterator it{"x"}; it != sfs::recursive_directory_iterator(); it.increment(ec)) { std::cout << *it << '\n'; } return 0; } On my system, it outputs: "x/b" Using a `directory_iterator` instead does print both directories, as expected.