[fs.class.rec.dir.itr.general] (original) (raw)
31 Input/output library [input.output]
31.12 File systems [filesystems]
31.12.12 Class recursive_directory_iterator [fs.class.rec.dir.itr]
31.12.12.1 General [fs.class.rec.dir.itr.general]
An object of type recursive_directory_iterator provides an iterator for a sequence of directory_entry elements representing the files in a directory or in an implementation-defined directory-like file type, and its subdirectories.
namespace std::filesystem { class recursive_directory_iterator { public: using iterator_category = input_iterator_tag;using value_type = directory_entry;using difference_type = ptrdiff_t;using pointer = const directory_entry*;using reference = const directory_entry&; recursive_directory_iterator() noexcept;explicit recursive_directory_iterator(const path& p); recursive_directory_iterator(const path& p, directory_options options); recursive_directory_iterator(const path& p, directory_options options, error_code& ec); recursive_directory_iterator(const path& p, error_code& ec); recursive_directory_iterator(const recursive_directory_iterator& rhs); recursive_directory_iterator(recursive_directory_iterator&& rhs) noexcept;~recursive_directory_iterator(); directory_options options() const;int depth() const;bool recursion_pending() const;const directory_entry& operator*() const;const directory_entry* operator->() const; recursive_directory_iterator& operator=(const recursive_directory_iterator& rhs); recursive_directory_iterator& operator=(recursive_directory_iterator&& rhs) noexcept; recursive_directory_iterator& operator++(); recursive_directory_iterator& increment(error_code& ec);void pop();void pop(error_code& ec);void disable_recursion_pending();bool operator==(default_sentinel_t) const noexcept { return *this == recursive_directory_iterator();} };}
Calling options, depth, recursion_pending,pop or disable_recursion_pendingon an iterator that is not dereferenceable results in undefined behavior.
The behavior of a recursive_directory_iterator is the same as a directory_iterator unless otherwise specified.
[Note 1:
If the directory structure being iterated over contains cycles then it is possible that the end iterator is unreachable.
— _end note_]