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 錯誤碼作為錯誤碼引數。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 3013 | C++17 | error_code 過載被標記為 noexcept 但可以分配記憶體 |
noexcept 已移除 |