std::filesystem::directory_iterator::directory_iterator
来自cppreference.com
                    
                                        
                    < cpp | filesystem | directory iterator
                    
                                                            
                    |   directory_iterator() noexcept;  | 
(1) | (C++17 起) | 
|   explicit directory_iterator( const std::filesystem::path& p );  | 
(2) | (C++17 起) | 
|   directory_iterator( const std::filesystem::path& p,  std::filesystem::directory_options options);  | 
(3) | (C++17 起) | 
|   directory_iterator( const std::filesystem::path& p, std::error_code& ec );  | 
(4) | (C++17 起) | 
|   directory_iterator( const std::filesystem::path& p,                      std::filesystem::directory_options options,  | 
(5) | (C++17 起) | 
|   directory_iterator( const directory_iterator& ) = default;  | 
(6) | (C++17 起) | 
|   directory_iterator( directory_iterator&& ) = default;  | 
(7) | (C++17 起) | 
构造新的目录迭代器。
1) 构造尾迭代器。
3) 同 (2) ,但若 
options 中设置了 std::filesystem::directory_options::skip_permission_denied 且构造遇到权限拒绝错误,则构造尾迭代器且不报告错误。4) 构造指代 
p 所标识目录的首个目录条目的目录迭代器。若 p 指代不存在的文件或不指代目录,则返回尾迭代器并设置 ec 。5) 同 (4) ,但若 
options 中设置了 std::filesystem::directory_options::skip_permission_denied 且构造遇到权限拒绝错误,则构造尾迭代器且不报告错误。参数
| p | - | 要创建迭代器的路径 | 
| ec | - | 存储错误状态的错误码 | 
异常
2-5) 不接受 std::error_code& 参数的重载在底层 OS API 错误时抛出 filesystem_error ,以第一 path 参数 
p 和作为错误码参数的 OS 错误码构造。若 OS API 调用失败,则接受 std::error_code& 参数的重载设置该参数为 OS API 错误码,而若不出现错误则执行 ec.clear() 。若内存分配失败,则任何不标记为 noexcept 的重载可能抛出 std::bad_alloc 。注意
欲在当前目录迭代,则应以 directory_iterator(".") 构造迭代器,而非 directory_iterator("") 。
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
| DR | 应用于 | 出版时的行为 | 正确行为 | 
|---|---|---|---|
| LWG 3013 | C++17 |  error_code 重载被标记为 noexcept 但能分配内存
 | 
移除 noexcept |