std::filesystem::recursive_directory_iterator::recursive_directory_iterator

来自cppreference.com
 
 
 
 
recursive_directory_iterator() noexcept;
(1) (C++17 起)
recursive_directory_iterator( const recursive_directory_iterator& rhs );
(2) (C++17 起)
recursive_directory_iterator( recursive_directory_iterator&& rhs ) noexcept;
(3) (C++17 起)
explicit recursive_directory_iterator( const std::filesystem::path& p );
(4) (C++17 起)
recursive_directory_iterator(

  const std::filesystem::path& p,

  std::filesystem::directory_options options );
(4) (C++17 起)
recursive_directory_iterator(

  const std::filesystem::path& p,
  std::filesystem::directory_options options,

  std::error_code& ec );
(5) (C++17 起)
recursive_directory_iterator( const std::filesystem::path& p, std::error_code& ec );
(6) (C++17 起)

构造新的递归目录迭代器。

1) 默认构造函数。构造尾迭代器。
2) 复制构造函数。
3) 移动构造函数。
4-6) 构造代表 p 所解析到的目录的首个条目的迭代器。

参数

rhs - 要复制或移动的迭代器
p - 要迭代于其上,及递归地迭代于其子目录上的路径
options - 迭代所用的目录选项
ec - 存储错误状态的错误码

异常

不接受 std::error_code& 参数的重载在底层 OS API 错误时抛出 filesystem_error ,以第一 path 参数 p 和作为错误码参数的 OS 错误码构造。若 OS API 调用失败,则接受 std::error_code& 参数的重载设置该参数为 OS API 错误码,而若不出现错误则执行 ec.clear() 。若内存分配失败,则任何不标记为 noexcept 的重载可能抛出 std::bad_alloc

注意

递归目录迭代器默认不允许跟随目录符号链接。欲启用此行为,须在 options 选项集中指定 directory_options::follow_directory_symlink

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 3013 C++17 error_code 重载被标记为 noexcept 但能分配内存 移除 noexcept