Функции работы с файловой системой запрашивают или изменяют файлы, включая каталоги, во внешнем хранилище.
[ Note: Поскольку file system racesпри операциях файловой системы часто возникают сбои оборудования, сбои сети и многие другие виды ошибок, пользователи должны знать, что любая функция операции с файловой системой, независимо от того, насколько она кажется безобидной, может столкнуться с ошибкой; см [fs.err.report]. ] — end note
path absolute(const path& p);
path absolute(const path& p, error_code& ec);
Effects: Создает абсолютный путь, ссылающийся на то же расположение файловой системы, что p и в операционной системе ([fs.conform.os]).
[ Note: Для возвращаемого пути, rp, rp.is_absolute() является , true если не возникает ошибка. ] — end note
Throws: Как указано в [fs.err.report].
[ Note: Чтобы разрешить символические ссылки или выполнить другую очистку, которая может потребовать запросов к вторичному хранилищу, например жестким дискам, рассмотреть canonical ([fs.op.canonical]). ] — end note
[ Note: Реализациям настоятельно рекомендуется не запрашивать вторичное хранилище и не рассматривать !exists(p) ошибку. ] — end note
path canonical(const path& p, const path& base = current_path());
path canonical(const path& p, error_code& ec);
path canonical(const path& p, const path& base, error_code& ec);
Effects: Преобразует p, который должен существовать, в абсолютный путь без символической ссылки dotили dot-dot элементов в имени пути в универсальном формате.
Returns: Путь, который относится к тому же объекту файловой системы, что и absolute(p, base). Для перегрузки без base аргумента base есть current_path(). Подписи с аргументом ec возвращаются в path() случае ошибки.
Throws: Как указано в [fs.err.report].
void copy(const path& from, const path& to);
void copy(const path& from, const path& to, error_code& ec) noexcept;
void copy(const path& from, const path& to, copy_options options);
void copy(const path& from, const path& to, copy_options options,
error_code& ec) noexcept;
Requires: [fs.enum.copy.opts]Устанавливается не более одного элемента из каждой группы опций ( ) options.
Effects: Перед первым применением f и t:
Если
(options & copy_options::create_symlinks) != copy_options::none || (options & copy_options::skip_symlinks) != copy_options::none
тогда auto f = symlink_status(from) и при необходимости auto t = symlink_status(to).
В противном случае, если
(options & copy_options::copy_symlinks) != copy_options::none
тогда auto f = symlink_status(from) и при необходимости auto t = status(to).
В противном случае auto f = status(from) и при необходимости auto t = status(to).
Эффекты тогда следующие:
Если f.type() или t.type() является типом файла, определяемым реализацией ([fs.enum.file_type]), то эффекты определяются реализацией.
В противном случае сообщается об ошибке, как указано в [fs.err.report] if:
!exists(f), или
equivalent(from, to), или
is_other(f) || is_other(t), или
is_directory(f) && is_regular_file(t).
В противном случае, если is_symlink(f), то:
Если (options & copy_options::skip_symlinks) != copy_options::none потом вернемся.
В противном случае, если
!exists(t) && (options & copy_options::copy_symlinks) != copy_options::none
тогда copy_symlink(from, to).
В противном случае сообщите об ошибке, как указано в [fs.err.report].
В противном случае, если is_regular_file(f), то:
Если (options & copy_options::directories_only) != copy_options::none, то вернись.
В противном случае, если (options & copy_options::create_symlinks) != copy_options::none, то создайте символическую ссылку на исходный файл.
В противном случае, если (options & copy_options::create_hard_links) != copy_options::none, то создайте жесткую ссылку на исходный файл.
Иначе если is_directory(t), то copy_file(from, to/from.filename(), options).
В противном случае copy_file(from, to, options).
В противном случае, если
is_directory(f) && ((options & copy_options::recursive) != copy_options::none || options == copy_options::none)
тогда:
Если !exists(t), то create_directory(to, from).
Затем перейдите по файлам from, как если бы
for (const directory_entry& x : directory_iterator(from))
copy(x.path(), to/x.path().filename(), options | copy_options::unspecified)
В противном случае, для подписи с аргументом ec, ec.clear().
В остальном никаких эффектов.
Throws: Как указано в [fs.err.report].
Remarks: Для подписи с аргументом ecлюбые библиотечные функции, вызываемые реализацией, должны иметь error_code аргумент, если это применимо.
[ Example: Учитывая эту структуру каталогов:
/dir1 file1 file2 dir2 file3
Вызов copy("/dir1", "/dir3") приведет к:
/dir1 file1 file2 dir2 file3 /dir3 file1 file2
В качестве альтернативы вызов copy("/dir1", "/dir3", copy_options::recursive) может привести к:
/dir1 file1 file2 dir2 file3 /dir3 file1 file2 dir2 file3
— end example ]
bool copy_file(const path& from, const path& to);
bool copy_file(const path& from, const path& to, error_code& ec) noexcept;
Returns: copy_file(from, to, copy_options::none) или
copy_file(from, to, copy_options::none, ec), соответственно.
Throws: Как указано в [fs.err.report].
bool copy_file(const path& from, const path& to, copy_options options);
bool copy_file(const path& from, const path& to, copy_options options,
error_code& ec) noexcept;
Requires: [fs.enum.copy.opts]Устанавливается не более одного элемента из каждой группы опций ( ) options.
Effects: Следующее:
Сообщить об ошибке, что файл уже существует, [fs.err.report] если:
!is_regular_file(from), или
exists(to) и !is_regular_file(to), или
exists(to) и equivalent(from, to), или
exists(to) а также
(options & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options::update_existing)) == copy_options::none
В противном случае скопируйте содержимое и атрибуты файла, в который from разрешается, в файл, в который to разрешается, если:
!exists(to), или
(options & copy_options::overwrite_existing) != copy_options::none, или
(options & copy_options::update_existing) != copy_options::none и from является более поздним, чем toопределяется, как если бы с использованием last_write_time функции ([fs.op.last_write_time]).
В остальном никаких эффектов.
Returns: true если from файл был скопирован, иначе false. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
void copy_symlink(const path& existing_symlink, const path& new_symlink);
void copy_symlink(const path& existing_symlink, const path& new_symlink,
error_code& ec) noexcept;
Effects: Эквивалент
function(read_symlink(existing_symlink), new_symlink) или
function(read_symlink(existing_symlink, ec), new_symlink, ec), соответственно, где в каждом случае function является create_symlink или
create_directory_symlink в зависимости от обстоятельств.
Throws: Как указано в [fs.err.report].
bool create_directories(const path& p);
bool create_directories(const path& p, error_code& ec) noexcept;
Returns: true если был создан новый каталог, иначе false. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool create_directory(const path& p);
bool create_directory(const path& p, error_code& ec) noexcept;
Effects: Устанавливает постусловие, пытаясь создать каталог, в который p разрешается, как если бы POSIX mkdir() со вторым аргументом static_cast<int>(perms::all). Ошибка создания из- p за преобразования в существующий каталог не должна рассматриваться как ошибка.
Returns: true если был создан новый каталог, иначе false. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool create_directory(const path& p, const path& existing_p);
bool create_directory(const path& p, const path& existing_p, error_code& ec) noexcept;
Effects: Устанавливает постусловие, пытаясь создать каталог, в который p разрешается, с атрибутами, скопированными из каталога existing_p. Набор копируемых атрибутов зависит от операционной системы. Ошибка создания из- p за преобразования в существующий каталог не должна рассматриваться как ошибка. [ Note: Для операционных систем на базе POSIX это те атрибуты, которые копируются собственным API, stat(existing_p.c_str(), &attributes_stat) за которыми следует mkdir(p.c_str(), attributes_stat.st_mode). Для операционных систем на базе Windows атрибуты копируются собственным API CreateDirectoryExW(existing_p.c_str(), p.c_str(), 0). ] — end note
Returns: true если был создан новый каталог, иначе false. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
void create_directory_symlink(const path& to, const path& new_symlink);
void create_directory_symlink(const path& to, const path& new_symlink,
error_code& ec) noexcept;
Postconditions: new_symlink преобразуется в файл символьной ссылки, который содержит неопределенное представление to.
Throws: Как указано в [fs.err.report].
[ Note: Некоторые операционные системы требуют создания символической ссылки, чтобы идентифицировать ссылку на каталог. Переносимый код следует использовать create_directory_symlink() для создания символических ссылок на каталоги, а не ] create_symlink() — end note
void create_hard_link(const path& to, const path& new_hard_link);
void create_hard_link(const path& to, const path& new_hard_link,
error_code& ec) noexcept;
Throws: Как указано в [fs.err.report].
[ Note: Некоторые операционные системы вообще не поддерживают жесткие ссылки или поддерживают их только для обычных файлов. Некоторые файловые системы (например, файловая система FAT) не поддерживают жесткие ссылки независимо от операционной системы. Некоторые файловые системы ограничивают количество ссылок на файл. ] — end note
void create_symlink(const path& to, const path& new_symlink);
void create_symlink(const path& to, const path& new_symlink,
error_code& ec) noexcept;
Postconditions: new_symlink преобразуется в файл символьной ссылки, который содержит неопределенное представление to.
Throws: Как указано в [fs.err.report].
path current_path();
path current_path(error_code& ec);
Returns: Абсолютный путь к текущему рабочему каталогу, имя которого в собственном формате получается, как если бы POSIX getcwd(). Подпись с аргументом ec возвращается, path() если возникает ошибка.
Throws: Как указано в [fs.err.report].
Remarks: Текущий рабочий каталог - это каталог, связанный с процессом, который используется в качестве начального местоположения при разрешении путей для относительных путей.
[ Название было выбрано , чтобы подчеркнуть , что возвращаемое значение представляет собой путь, а не только одно имя каталога. ] Note: current_path() — end note
[ Note: Текущий путь, возвращаемый многими операционными системами, является опасной глобальной переменной. Он может быть неожиданно изменен сторонними функциями, функциями системной библиотеки или другим потоком. ] — end note
void current_path(const path& p);
void current_path(const path& p, error_code& ec) noexcept;
Throws: Как указано в [fs.err.report].
bool equivalent(const path& p1, const path& p2);
bool equivalent(const path& p1, const path& p2, error_code& ec) noexcept;
Effects: Определяет s1 и s2. Если (!exists(s1) && !exists(s2)) || (is_other(s1) && is_other(s2)) сообщается об ошибке ([fs.err.report]).
Returns: true, если s1 == s2 и p1 и p2 разрешаются в один и тот же объект файловой системы, иначе false. Подпись с аргументом ec возвращается, false если возникает ошибка.
Считается, что два пути разрешаются к одному и тому же объекту файловой системы, если два объекта-кандидата находятся на одном устройстве в одном месте. Это определяется, как если бы, значениями stat структуры POSIX , полученными, как если бы, stat() для двух путей, имеющих равные st_dev значения и равные st_ino значения.
Throws: Как указано в [fs.err.report].
bool exists(file_status s) noexcept;
bool exists(const path& p);
bool exists(const path& p, error_code& ec) noexcept;
Позвольте s быть a file_status, определяемым, как если бы по status(p) или status(p, ec), соответственно.
Throws: Как указано в [fs.err.report].
uintmax_t file_size(const path& p);
uintmax_t file_size(const path& p, error_code& ec) noexcept;
Returns:
Если !exists(p) сообщается об ошибке ([fs.err.report]).
В противном случае, если is_regular_file(p), размер файла в байтах p преобразуется в, определяемый, как если бы, значением элемента stat структуры POSIX, st_size полученным, как если бы POSIX stat().
Подпись с аргументом ec возвращается, static_cast<uintmax_t>(-1) если возникает ошибка.
Throws: Как указано в [fs.err.report].
uintmax_t hard_link_count(const path& p);
uintmax_t hard_link_count(const path& p, error_code& ec) noexcept;
Returns: Количество жестких ссылок для p. Подпись с аргументом ec возвращается, static_cast<uintmax_t>(-1) если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool is_block_file(file_status s) noexcept;
bool is_block_file(const path& p);
bool is_block_file(const path& p, error_code& ec) noexcept;
Returns: is_block_file(status(p)) или is_block_file(status(p, ec)), соответственно. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool is_character_file(file_status s) noexcept;
bool is_character_file(const path& p);
bool is_character_file(const path& p, error_code& ec) noexcept;
Returns: is_character_file(status(p))
или is_character_file(status(p, ec)), соответственно.
Подпись с аргументом ec возвращается, false
если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool is_directory(file_status s) noexcept;
bool is_directory(const path& p);
bool is_directory(const path& p, error_code& ec) noexcept;
Returns: is_directory(status(p)) или is_directory(status(p, ec)), соответственно. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool is_empty(const path& p);
bool is_empty(const path& p, error_code& ec) noexcept;
Effects:
Определяем file_status s, как будто по status(p) или status(p, ec), соответственно.
Для подписи с аргументом ecвернуть, false если произошла ошибка.
В противном случае, если is_directory(s):
Создайте переменную itr, как будто по directory_iterator itr(p) или directory_iterator itr(p, ec), соответственно.
Для подписи с аргументом ecвернуть, false если произошла ошибка.
В противном случае верните itr == directory_iterator().
Иначе:
Определяем uintmax_t sz, как будто по file_size(p) или file_size(p, ec), соответственно.
Для подписи с аргументом ecвернуть, false если произошла ошибка.
В противном случае верните sz == 0.
Throws: Как указано в [fs.err.report].
bool is_fifo(file_status s) noexcept;
bool is_fifo(const path& p);
bool is_fifo(const path& p, error_code& ec) noexcept;
Returns: is_fifo(status(p)) или is_fifo(status(p, ec)), соответственно. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool is_other(file_status s) noexcept;
bool is_other(const path& p);
bool is_other(const path& p, error_code& ec) noexcept;
Returns: is_other(status(p)) или is_other(status(p, ec)), соответственно. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool is_regular_file(file_status s) noexcept;
bool is_regular_file(const path& p);
bool is_regular_file(const path& p, error_code& ec) noexcept;
Effects: Устанавливает ec как бы мимо status(p, ec). [ Note: file_type::none, file_type::not_found и для file_type::unknown случаев установлены ec значения ошибок. Чтобы различать случаи, вызовите status функцию напрямую. ] — end note
bool is_socket(file_status s) noexcept;
bool is_socket(const path& p);
bool is_socket(const path& p, error_code& ec) noexcept;
Returns: is_socket(status(p)) или is_socket(status(p, ec)), соответственно. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
bool is_symlink(file_status s) noexcept;
bool is_symlink(const path& p);
bool is_symlink(const path& p, error_code& ec) noexcept;
Returns: is_symlink(symlink_status(p)) или is_symlink(symlink_status(p, ec)), соответственно. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
file_time_type last_write_time(const path& p);
file_time_type last_write_time(const path& p, error_code& ec) noexcept;
Returns: Время последней модификации данных p, определяемое, как если бы, значением stat члена структуры POSIX, st_mtime полученным, как если бы POSIX stat(). Подпись с аргументом ec возвращается, file_time_type::min() если возникает ошибка.
Throws: Как указано в [fs.err.report].
void last_write_time(const path& p, file_time_type new_time);
void last_write_time(const path& p, file_time_type new_time,
error_code& ec) noexcept;
Effects: Устанавливает время последнего изменения данных файла, разрешенного с помощью p to new_time, как если бы POSIX futimens().
Throws: Как указано в [fs.err.report].
void permissions(const path& p, perms prms, perm_options opts=perm_options::replace);
void permissions(const path& p, perms prms, error_code& ec) noexcept;
void permissions(const path& p, perms prms, perm_options opts, error_code& ec);
Remarks: Вторая подпись ведет себя так, как если бы у нее был дополнительный параметр perm_options opts с аргументом perm_options::replace.
Effects: Применяет действие, указанное в, opts к p разрешению файла или к p самому файлу , если p это символическая ссылка и perm_options::nofollow установлена в opts. Действие применяется, как если бы POSIX fchmodat().
[ Note: Концептуально разрешения рассматриваются как биты, но фактическая реализация может использовать какой-то другой механизм. ] — end note
Throws: Как указано в [fs.err.report].
path proximate(const path& p, error_code& ec);
Throws: Как указано в [fs.err.report].
path proximate(const path& p, const path& base = current_path());
path proximate(const path& p, const path& base, error_code& ec);
Returns: Для первой формы:
weakly_canonical(p).lexically_proximate(weakly_canonical(base));
Для второй формы:
weakly_canonical(p, ec).lexically_proximate(weakly_canonical(base, ec));
или path() при первом возникновении ошибки, если таковая имеется.
Throws: Как указано в [fs.err.report].
path read_symlink(const path& p);
path read_symlink(const path& p, error_code& ec);
Returns: Если p разрешает символическую ссылку, path объект, содержащий содержимое этой символической ссылки. Подпись с аргументом ec возвращается, path() если возникает ошибка.
Throws: Как указано в [fs.err.report]. [ Note: Это ошибка, если p не разрешается символическая ссылка. ] — end note
path relative(const path& p, error_code& ec);
Throws: Как указано в [fs.err.report].
path relative(const path& p, const path& base = current_path());
path relative(const path& p, const path& base, error_code& ec);
Returns: Для первой формы:
weakly_canonical(p).lexically_relative(weakly_canonical(base));
Для второй формы:
weakly_canonical(p, ec).lexically_relative(weakly_canonical(base, ec));
или path() при первом возникновении ошибки, если таковая имеется.
Throws: Как указано в [fs.err.report].
bool remove(const path& p);
bool remove(const path& p, error_code& ec) noexcept;
Effects: Если exists(symlink_status(p, ec)), файл p удаляется, как если бы POSIX remove(). [ Note: Символическая ссылка удаляется сама по себе, а не файл, в который она разрешается. ] — end note
Returns: false если p не существовало, иначе true. Подпись с аргументом ec возвращается, false если возникает ошибка.
Throws: Как указано в [fs.err.report].
uintmax_t remove_all(const path& p);
uintmax_t remove_all(const path& p, error_code& ec) noexcept;
Effects: Рекурсивно удаляет содержимое, p если оно существует, затем удаляет p сам файл , как если бы это было POSIX remove(). [ Note: Символическая ссылка удаляется сама по себе, а не файл, в который она разрешается. ] — end note
Returns: Количество удаленных файлов. Подпись с аргументом ec возвращается, static_cast< uintmax_t>(-1) если возникает ошибка.
Throws: Как указано в [fs.err.report].
void rename(const path& old_p, const path& new_p);
void rename(const path& old_p, const path& new_p, error_code& ec) noexcept;
Effects: Переименовывает old_p в new_p, как если бы POSIX rename().
[ Note:
Если old_p и new_p разрешаются в один и тот же существующий файл, никаких действий не предпринимается.
В противном случае переименование может включать следующие эффекты:
если new_p разрешается в существующий файл, не new_p являющийся каталогом, удаляется; иначе,
если new_p разрешается в существующий каталог, new_p удаляется, если он пуст в POSIX-совместимых операционных системах, но может быть ошибкой в других операционных системах.
Сама символическая ссылка переименовывается, а не файл, в который она разрешается. ] — end note
Throws: Как указано в [fs.err.report].
void resize_file(const path& p, uintmax_t new_size);
void resize_file(const path& p, uintmax_t new_size, error_code& ec) noexcept;
Throws: Как указано в [fs.err.report].
space_info space(const path& p);
space_info space(const path& p, error_code& ec) noexcept;
Returns: Тип объекта space_info. Значение space_info объекта определяется как если при использовании POSIX statvfs для получения POSIX struct statvfs, а затем умножения его f_blocks, f_bfreeи f_bavail членов его f_frsize членами, и присвоения результатов к capacity, freeи available членов соответственно. Любые элементы, для которых невозможно определить значение, должны быть установлены в static_cast<uintmax_t>(-1). Для подписи с аргументом ecвсе члены устанавливаются в значение, static_cast<uintmax_t>(-1) если возникает ошибка.
Throws: Как указано в [fs.err.report].
file_status status(const path& p);
Effects: Будто:
error_code ec;
file_status result = status(p, ec);
if (result.type() == file_type::none)
throw filesystem_error(implementation-supplied-message, p, ec);
return result;
Throws: filesystem_error. [ Note: result значения file_status(file_type::not_found) и file_status(file_type::unknown) не считаются ошибками и не вызывают исключения. ] — end note
file_status status(const path& p, error_code& ec) noexcept;
Effects: Если возможно, определяет атрибуты файла, в который p разрешается, как если бы с помощью POSIX stat() для получения POSIX struct stat. Если во время определения атрибута API базовой файловой системы сообщает об ошибке, устанавливается, ec чтобы указать конкретную сообщенную ошибку. В противном случае ec.clear(). [ Note: Это позволяет пользователям проверять особенности основных ошибок API, даже если значение, возвращаемое функцией status() , не является file_status(file_type::none). ] — end note
Пусть prms обозначает результат (m & perms::mask), где m определяется как бы преобразованием st_mode члена полученного struct stat в тип perms.
Returns:
Если ec != error_code():
Если конкретная ошибка указывает, что p не может быть разрешена, потому что какой-то элемент пути не существует, возвращается file_status(file_type::not_found).
В противном случае, если конкретная ошибка указывает, что она p может быть устранена, но атрибуты не могут быть определены, возвращается file_status(file_type::unknown).
В противном случае возвращается file_status(file_type::none).
[ Note: Эта семантика различает то, p что известно, что не существует, p существует, но не может определить свои атрибуты, и есть ошибка, которая не позволяет даже узнать, p существует ли . Эти различия важны для некоторых случаев использования. ] — end note
Иначе,
Если атрибуты указывают на обычный файл, как если бы это было POSIX S_ISREG, возвращается file_status(file_type::regular, prms). [ Note: file_type::regular подразумевает, что соответствующие <fstream> операции будут успешными, при условии отсутствия ошибок оборудования, разрешений, доступа или гонок файловой системы. Отсутствие file_type::regular не обязательно означает, что <fstream> операции с каталогом завершатся ошибкой. ] — end note
В противном случае, если атрибуты указывают каталог, как если бы это было POSIX S_ISDIR, возвращается file_status(file_type::directory, prms). [ Note: file_type::directory подразумевает, что вызов directory_iterator(p) будет успешным. ] — end note
В противном случае, если атрибуты указывают на блокировку специального файла, как если бы это было POSIX S_ISBLK, возвращается file_status(file_type::block, prms).
В противном случае, если атрибуты указывают на символьный специальный файл, как если бы это было POSIX S_ISCHR, возвращается file_status(file_type::character, prms).
В противном случае, если атрибуты указывают на файл fifo или pipe, как если бы это был POSIX S_ISFIFO, возвращается file_status(file_type::fifo, prms).
В противном случае, если атрибуты указывают сокет, как если бы это было согласно POSIX S_ISSOCK, возвращается file_status(file_type::socket, prms).
В противном случае, если атрибуты указывают тип файла, определенный реализацией ([fs.enum.file_type]), возвращается file_status(file_type::A, prms), где A - константа для типа файла, определенного реализацией.
В противном случае возвращается file_status(file_type::unknown, prms).
bool status_known(file_status s) noexcept;
file_status symlink_status(const path& p);
file_status symlink_status(const path& p, error_code& ec) noexcept;
Effects: То же, что status()и выше, за исключением того, что атрибуты p определяются, как если бы при использовании POSIX lstat() для получения POSIX struct stat.
Пусть prms обозначает результат (m & perms::mask), где m определяется как бы преобразованием st_mode члена полученного struct stat в тип perms.
Returns: То же, что status()и выше, за исключением того, что если атрибуты указывают на символическую ссылку, как если бы это было в POSIX S_ISLNK, возвращается file_status(file_type::symlink, prms). Подпись с аргументом ec возвращается, file_status(file_type::none) если возникает ошибка.
Throws: Как указано в [fs.err.report].
path temp_directory_path();
path temp_directory_path(error_code& ec);
Returns: Неуказанный путь к каталогу, подходящий для временных файлов. Об ошибке должно быть сообщено, если !exists(p) || !is_directory(p), где p - путь, который должен быть возвращен. Подпись с аргументом ec возвращается, path() если возникает ошибка.
Throws: Как указано в [fs.err.report].
[ Example: Для POSIX на основе операционных систем, реализация может вернуть путь , поставляемый по первой переменной окружения , найденной в списке TMPDIR, TMP, TEMP, TEMPDIR, или если ни один из них не будут найдены, "/tmp".
Для операционных систем на базе Windows реализация может возвращать путь, указанный GetTempPath функцией Windows API. ] — end example
path weakly_canonical(const path& p);
path weakly_canonical(const path& p, error_code& ec);
Returns: p с разрешенными символическими ссылками и результатом normalized.
Effects: Используя status(p) или status(p, ec), соответственно, для определения существования, вернуть путь, составленный operator/= из результата вызова canonical() без base аргумента и с аргументом пути, состоящим из ведущих элементов, p которые существуют, если есть, за которыми следуют элементы, p которые не существуют, если любой. Для первой формы canonical() вызывается без error_code аргумента. Во второй форме, canonical() вызывается с ec как error_code аргумент, и path() возвращается на первом возникновении ошибки, если таковые имеются.
Postconditions: Возвращенный путь находится в normal form.
Remarks: Реализациям рекомендуется избегать ненужной нормализации, например, когда canonical уже была вызвана целиком p.
Throws: Как указано в [fs.err.report].