Namespaces
Variants

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

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

Avanza el iterador a la siguiente entrada. Invalida todas las copias del valor anterior de * this .

Si no quedan más entradas en el directorio actualmente iterado, la iteración se reanuda sobre el directorio padre. El proceso se repite si el directorio padre no tiene entradas hermanas que puedan ser iteradas. Si se alcanza el padre de la jerarquía de directorios que ha sido iterada recursivamente (no hay entradas candidatas en depth ( ) == 0 ) , * this se establece como un iterador final.

De lo contrario, si * this hace referencia a un directorio, se itera sobre él si se cumplen las siguientes condiciones:

  • disable_recursion_pending() no ha sido llamado antes de este incremento, es decir, recursion_pending ( ) == true .
  • El directorio no es un enlace simbólico o el seguimiento de enlaces simbólicos está habilitado, es decir, al menos una de las siguientes condiciones es verdadera:
    • ! is_symlink ( ( * this ) - > symlink_status ( ) ) .
    • ( options ( ) & directory_options :: follow_directory_symlink ) ! = directory_options :: none )

Contenidos

Parámetros

ec - código de error para almacenar el estado de error

Valor de retorno

* this

Excepciones

Cualquier sobrecarga no marcada como noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.

1) Lanza std::filesystem::filesystem_error en errores de la API del sistema operativo subyacente, construido con el código de error del sistema operativo como argumento de código de error.
2) Establece un parámetro std:: error_code & al código de error de la API del sistema operativo si una llamada a la API del sistema operativo falla, y ejecuta ec. clear ( ) si no ocurren errores.

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3013 C++17 error_code sobrecarga marcada como noexcept pero puede asignar memoria noexcept eliminado