std::experimental::filesystem::copy_options
From cppreference.com
 
 
 < cpp | experimental | fs 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
Experimental 
 Filesystem library (filesystem TS)
 Library fundamentals (library fundamentals TS)
 Library fundamentals 2 (library fundamentals TS v2)
 Library fundamentals 3 (library fundamentals TS v3)
 Extensions for parallelism (parallelism TS)
 Extensions for parallelism 2 (parallelism TS v2)
 Extensions for concurrency (concurrency TS)
 Extensions for concurrency 2 (concurrency TS v2)
 Concepts (concepts TS)
 Ranges (ranges TS)
 Reflection (reflection TS)
 Mathematical special functions (special functions TR)
Defined in header 
 
 
<experimental/filesystem> 
 enum class copy_options {
 
 (filesystem TS) 
    none = 0,
    skip_existing = 1,
    overwrite_existing = 2,
    update_existing = 4,
    recursive = 8,
    copy_symlinks = 16,
    skip_symlinks = 32,
    directories_only = 64,
    create_symlinks = 128,
    create_hard_links = 256
This type represents available options that control the behavior of the copy() and copy_file() function.
copy_options satisfies the requirements of BitmaskType (which means the bitwise operators operator&, operator|, operator^, operator~, operator&=, operator|=, and operator^= are defined for this type).
[edit] Member constants
At most one copy option in each of the following options groups may be present, otherwise the behavior of the copy functions is undefined.
| Member constant | Value | Meaning | 
|---|---|---|
| options controlling copy_file() when the file already exists | ||
| none | 0 | Report an error (default behavior). | 
| skip_existing | 1 | Keep the existing file, without reporting an error. | 
| overwrite_existing | 2 | Replace the existing file. | 
| update_existing | 4 | Replace the existing file only if it is older than the file being copied. | 
| options controlling the effects of copy() on subdirectories | ||
| none | 0 | Skip subdirectories (default behavior). | 
| recursive | 8 | Recursively copy subdirectories and their content. | 
| options controlling the effects of copy() on symbolic links | ||
| none | 0 | Follow symlinks (default behavior). | 
| copy_symlinks | 16 | Copy symlinks as symlinks, not as the files they point to. | 
| skip_symlinks | 32 | Ignore symlinks. | 
| options controlling the kind of copying copy() does | ||
| none | 0 | Copy file content (default behavior). | 
| directories_only | 64 | Copy the directory structure, but do not copy any non-directory files. | 
| create_symlinks | 128 | Instead of creating copies of files, create symlinks pointing to the originals. Note: the source path must be an absolute path unless the destination path is in the current directory. | 
| create_hard_links | 256 | Instead of creating copies of files, create hardlinks that resolve to the same files as the originals. | 
[edit] Example
Run this code
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directories("sandbox/dir/subdir"); std::ofstream ("sandbox/file1.txt").put('a'); fs::copy("sandbox/file1.txt", "sandbox/file2.txt"); // copy file fs::copy("sandbox/dir", "sandbox/dir2"); // copy directory (non-recursive) // sandbox holds 2 files and 2 directories, one of which has a subdirectory // sandbox/file1.txt // sandbox/file2.txt // sandbox/dir2 // sandbox/dir // sandbox/dir/subdir fs::copy("sandbox", "sandbox/copy", fs::copy_options::recursive); // sandbox/copy holds copies of the above files and subdirectories fs::remove_all("sandbox"); }