名前空間
変種
操作

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

From cppreference.com
 
 
 
 
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)

目次

[編集] パラメータ

エラーコード - エラー状態を格納するためのエラーコード

[編集] 戻り値

*this

[編集] 例外

noexcept とマークされていないオーバーロードは、メモリ割り当てが失敗した場合に std::bad_alloc をスローする可能性があります。

1) 基盤となるOS APIエラーが発生した場合、 std::filesystem::filesystem_error をスローします。この例外は、OSエラーコードをエラーコード引数として構築されます。
2) OS API呼び出しが失敗した場合、std::error_code& パラメータにOS APIのエラーコードが設定されます。エラーが発生しなかった場合は、ec.clear() が実行されます。

[編集]

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 3013 C++17 error_code オーバーロードは noexcept とマークされていますが、メモリを割り当てる可能性があります。 noexcept 削除
English 日本語 中文(简体) 中文(繁體)