filesystem_error( const std::string& what_arg, std::error_code ec ); | (1) | (since C++17) |
filesystem_error( const std::string& what_arg, const std::filesystem::path& p1, std::error_code ec ); | (2) | (since C++17) |
filesystem_error( const std::string& what_arg, const std::filesystem::path& p1, const std::filesystem::path& p2, std::error_code ec ); | (3) | (since C++17) |
filesystem_error( const filesystem_error& other ) noexcept; | (4) | (since C++17) |
Constructs a new filesystem_error
object.
ec
and optionally, the paths that were involved in the operation that resulted in the error, are set to p1
and p2
. what()
after construction returns a string that contains what_arg
(assuming that it does not contain an embedded null character ). If either or both path
arguments are not provided, a null path
is used instead.other
. If *this
and other
both have dynamic type std::filesystem_error::filesystem_error
then std::strcmp(what(), other.what()) == 0
.what_arg | - | explanatory string |
ec | - | error code for the specific operating system dependent error |
p1, p2 | - | paths involved in the operation raising system error |
other | - | another filesystem_error object to copy |
Because copying std::filesystem::filesystem_error
is not permitted to throw exceptions, the explanatory string is typically stored internally in a separately-allocated reference-counted storage. This is also why there is no constructor taking std::string&&
: it would have to copy the content anyway.
Typical implementations also store path
objects referenced by path1()
and path2()
in the reference-counted storage.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/filesystem_error/filesystem_error