std::filesystem::recursive_directory_iterator::operator++, std::filesystem::recursive_directory_iterator::increment
recursive_directory_iterator& operator++(); | (1) | (начиная с C++17) |
recursive_directory_iterator& increment( std::error_code& ec ); | (2) | (начиная с C++17) |
Перемещает итератор к следующей записи. Делает недействительными все копии предыдущего значения *this.
Если в просматриваемом каталоге больше не осталось записей, обход продолжается в родительском каталоге. Этот процесс повторяется, если в родительском каталоге нет записей-соседей, доступных для обхода. Если достигнут родительский каталог иерархии, которая обходилась рекурсивно (в depth() == 0) нет подходящих записей), *this устанавливается в значение конечного итератора.
В противном случае, если *this указывает на каталог, он обходится, если выполнены следующие условия:
-
disable_recursion_pending()не вызывался до этого инкремента, то естьrecursion_pending() == true. - Каталог не является символической ссылкой или обход символических ссылок разрешён, то есть истинно хотя бы одно из следующих условий:
-
!is_symlink((*this)->symlink_status()). (options() & directory_options::follow_directory_symlink) != directory_options::none)
-
Параметры
| ec | - | код ошибки, в который записывается состояние ошибки |
Возвращаемое значение
*this
Исключения
Любая перегрузка, не помеченная как noexcept, может выбросить std::bad_alloc при сбое выделения памяти.
std::filesystem::filesystem_error при ошибках базового API ОС; код ошибки ОС используется в качестве аргумента кода ошибки.std::error_code& в код ошибки API ОС, если вызов API ОС завершился с ошибкой, и выполняет ec.clear(), если ошибок нет.Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 3013 | C++17 |
error_code перегрузка помечена noexcept, но может выделять память | noexcept удалён |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/recursive_directory_iterator/increment