std::filesystem::recursive_directory_iterator::operator++, std::filesystem::recursive_directory_iterator::increment
来自cppreference.com
recursive_directory_iterator& operator++(); |
(C++17 起) | |
recursive_directory_iterator& increment( std::error_code& ec ); |
(C++17 起) | |
前进迭代器到下个条目。非法化所有 *this 的先前值的副本。
若当前被迭代目录没有剩下更多条目,则回撤迭代到亲目录。若亲目录亦无能迭代的兄弟条目,则重复此过程。若抵达已被递归迭代的目录层级的亲目录(在 depth() == 0) 无更多可选择条目),则设置 *this 为尾迭代器。
否则,若 *this 代表目录,则若满足下列条件则迭代进入它:
- disable_recursion_pending() 在此次自增前未被调用,即 recursion_pending() == true 。
- 目录不是符号链接或启用跟随符号链接,即至少下列之一为 true :
- !is_symlink((*this)->symlink_status()) 。
- (options() & directory_options::follow_directory_symlink) != directory_options::none) 。
参数
ec | - | 要存储错误状态的错误码 |
返回值
*this
异常
不接受 std::error_code& 参数的重载在底层 OS API 错误时抛出 filesystem_error ,以作为错误码参数的 OS 错误码构造。若 OS API 调用失败,则接受 std::error_code& 参数的重载设置该参数为 OS API 错误码,而若不出现错误则执行 ec.clear() 。若内存分配失败,则任何不标记为 noexcept
的重载可能抛出 std::bad_alloc 。
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3013 | C++17 | error_code 重载被标记为 noexcept 但能分配内存
|
移除 noexcept |