std::filesystem::recursive_directory_iterator::disable_recursion_pending - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::filesystem::recursive_directory_iterator::disable_recursion_pending

From cppreference.com
< cpp‎ | filesystem‎ | recursive directory iterator

void disable_recursion_pending(); |  | (since C++17)

Disables recursion to the currently referred subdirectory, if any.

The call modifies the pending recursion flag on the iterator in such a way that the next time `increment` is called, the iterator will advance within the current directly even if it is currently referring to a subdirectory that hasn't been visited.

The status of the pending recursion flag can be queried with `recursion_pending()`, which is false after this call. It is reset back to true after `increment`, and its initial value is also true.

The behavior is undefined if *this is the end iterator.

### [edit] Parameters

(none)

### [edit] Return value

(none)

### [edit] Exceptions

(none)

### [edit] Example

Run this code

    #include <fstream>
    #include <iostream>
    #include <string>
    #include <filesystem>
    namespace fs = std::filesystem;

    int main()
    {
        fs::create_directories("sandbox/a/b/c");
        fs::create_directories("sandbox/a/b/d/e");
        std::ofstream("sandbox/a/b/file1.txt");
        fs::create_symlink("a", "sandbox/syma");
        for(auto i = fs::recursive_directory_iterator("sandbox");
                 i != fs::recursive_directory_iterator();
               ++i ) {
            std::cout << std::string(i.depth(), ' ') << *i;
            if(fs::is_symlink(i->symlink_status()))
                std::cout << " -> " << fs::read_symlink(*i);
            std::cout << '\n';

            // do not descend into "b"
            if(i->path().filename() == "b")
                i.disable_recursion_pending();
        }
        fs::remove_all("sandbox");
    }

Output:

    "sandbox/a"
     "sandbox/a/b"
    "sandbox/syma" -> "a"

### [edit] See also

recursion_pending | checks whether the recursion is disabled for the current directory (public member function) [edit]
incrementoperator++ | advances to the next entry (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/filesystem/recursive_directory_iterator/disable_recursion_pending&oldid=85031"