Namespaces
Variants

std::filesystem::filesystem_error:: filesystem_error

From cppreference.net
filesystem_error ( const std:: string & what_arg,
std:: error_code ec ) ;
(1) (начиная с C++17)
filesystem_error ( const std:: string & what_arg,

const std:: filesystem :: path & p1,

std:: error_code ec ) ;
(2) (начиная с C++17)
filesystem_error ( const std:: string & what_arg,

const std:: filesystem :: path & p1,
const std:: filesystem :: path & p2,

std:: error_code ec ) ;
(3) (начиная с C++17)
filesystem_error ( const filesystem_error & other ) noexcept ;
(4) (начиная с C++17)

Создает новый объект filesystem_error .

1-3) Код ошибки устанавливается в ec и, опционально, пути, которые были задействованы в операции, приведшей к ошибке, устанавливаются в p1 и p2 . what() после конструирования возвращает строку, содержащую what_arg (при условии, что она не содержит встроенный нулевой символ). Если один или оба аргумента path не предоставлены, вместо них используется нулевой path .
4) Конструктор копирования. Инициализирует содержимое значением из other . Если * this и other оба имеют динамический тип std::filesystem_error::filesystem_error , тогда std:: strcmp ( what ( ) , other. what ( ) ) == 0 .

Параметры

what_arg - пояснительная строка
ec - код ошибки для конкретной ошибки, зависящей от операционной системы
p1, p2 - пути, задействованные в операции, вызвавшей системную ошибку
other - другой объект filesystem_error для копирования

Примечания

Поскольку копирование std::filesystem::filesystem_error не может вызывать исключения, пояснительная строка обычно хранится внутри в отдельно выделенном хранилище со счетчиком ссылок. Это также объясняет, почему нет конструктора, принимающего std::string&& : в любом случае пришлось бы копировать содержимое.

Типичные реализации также хранят path объекты, на которые ссылаются path1() и path2() в хранилище с подсчётом ссылок.

Пример