Spec-Zone.ru › C++

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 при сбое выделения памяти.

1) Выбрасывает std::filesystem::filesystem_error при ошибках базового API ОС; код ошибки ОС используется в качестве аргумента кода ошибки.
2) Устанавливает параметр 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API