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) 当底层操作系统API出错时抛出 std::filesystem::filesystem_error ,该异常构造时以操作系统错误码作为错误码参数。
2) 若操作系统API调用失败,将设置 std:: error_code & 参数为操作系统API错误码;若无错误发生,则执行 ec. clear ( )

示例

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

DR 适用范围 发布时的行为 正确行为
LWG 3013 C++17 error_code 重载标记为 noexcept 但可能分配内存 移除 noexcept