Namespaces
Variants

std::filesystem::recursive_directory_iterator:: operator++, std::filesystem::recursive_directory_iterator:: increment

From cppreference.net
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 операционной системы, конструируемый с кодом ошибки ОС в качестве аргумента error code.
2) Устанавливает параметр std:: error_code & в код ошибки API операционной системы при сбое вызова OS API, и выполняет ec. clear ( ) если ошибок не возникает.

Пример

Отчёты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 3013 C++17 error_code overload marked noexcept but can allocate memory noexcept removed
Перевод текста на веб-странице на Русский:
DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 3013 C++17 error_code перегрузка помечена как noexcept, но может выделять память noexcept удален