30 Input/output library [input.output]

30.10 File systems [filesystems]

30.10.34 Filesystem operation functions [fs.op.funcs]

30.10.34.4 Copy file [fs.op.copy_file]

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].

Complexity: Максимум один прямой или косвенный вызов status(to).