名稱空間
變體
操作

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

來自 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)

目錄

[編輯] 引數

ec - 儲存錯誤狀態的錯誤碼

[編輯] 返回值

*this

[編輯] 異常

任何未標記為 noexcept 的過載都可能在記憶體分配失敗時丟擲 std::bad_alloc

1) 在底層 OS API 錯誤時丟擲 std::filesystem::filesystem_error,其構造時將 OS 錯誤碼作為錯誤碼引數。
2) 如果 OS API 呼叫失敗,將 std::error_code& 引數設定為 OS API 錯誤碼;如果沒有發生錯誤,則執行 ec.clear()

[編輯] 示例

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 3013 C++17 error_code 過載被標記為 noexcept 但可以分配記憶體 noexcept 已移除