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) 基盤となるOS APIエラーが発生した場合、 std::filesystem::filesystem_error をスローします。この例外はOSエラーコードをエラーコード引数として構築されます。
2) オペレーティングシステムAPI呼び出しが失敗した場合、 std:: error_code & パラメータにOS APIエラーコードを設定し、エラーが発生しなかった場合は ec. clear ( ) を実行します。

不具合報告

以下の動作変更欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 3013 C++17 error_code オーバーロードがnoexceptとマークされているがメモリを割り当てる可能性がある noexceptが削除された