Namespaces
Variants

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

From cppreference.net
recursive_directory_iterator & operator ++ ( ) ;
(1) (depuis C++17)
recursive_directory_iterator & increment ( std:: error_code & ec ) ;
(2) (depuis C++17)

Avance l'itérateur vers l'entrée suivante. Invalide toutes les copies de la valeur précédente de * this .

S'il n'y a plus d'entrées dans le répertoire actuellement itéré, l'itération reprend sur le répertoire parent. Le processus est répété si le répertoire parent n'a pas d'entrées frères pouvant être itérées. Si le parent de la hiérarchie de répertoires qui a été itérée récursivement est atteint (il n'y a pas d'entrées candidates à depth ( ) == 0 ) , * this est défini comme un itérateur de fin.

Sinon, si * this fait référence à un répertoire, il est parcouru récursivement si les conditions suivantes sont remplies :

  • disable_recursion_pending() n'a pas été appelé avant cet incrément, c'est-à-dire que recursion_pending ( ) == true .
  • Le répertoire n'est pas un lien symbolique ou le suivi des liens symboliques est activé, c'est-à-dire qu'au moins une des conditions suivantes est vraie :
    • ! is_symlink ( ( * this ) - > symlink_status ( ) ) .
    • ( options ( ) & directory_options :: follow_directory_symlink ) ! = directory_options :: none )

Table des matières

Paramètres

ec - code d'erreur pour stocker le statut d'erreur

Valeur de retour

* this

Exceptions

Toute surcharge non marquée noexcept peut lever std::bad_alloc si l'allocation de mémoire échoue.

1) Lance std::filesystem::filesystem_error en cas d'erreurs de l'API système sous-jacente, construit avec le code d'erreur du système d'exploitation comme argument de code d'erreur.
2) Définit un paramètre std:: error_code & au code d'erreur de l'API du système d'exploitation si un appel d'API système échoue, et exécute ec. clear ( ) si aucune erreur ne survient.

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3013 C++17 error_code surcharge marquée noexcept mais peut allouer de la mémoire noexcept supprimé