27 Input/output library [input.output]

27.10 File systems [filesystems]

27.10.15 Filesystem operation functions [fs.op.funcs]

27.10.15.38 System complete [fs.op.system_complete]

path system_complete(const path& p); path system_complete(const path& p, error_code& ec);

Effects: Composes an absolute path from p, using the same rules used by the operating system to resolve a path passed as the filename argument to standard library open functions.

Returns: The composed path. The signature with argument ec returns path() if an error occurs.

Postconditions: For the returned path, rp, rp.is_absolute() is true.

Throws: As specified in [fs.err.report].

Example: For POSIX-based operating systems, system_complete(p) has the same semantics as absolute(p, current_path()).

For Windows-based operating systems, system_complete(p) has the same semantics as absolute(p, current_path()) if p.is_absolute() || !p.has_root_name() or p and current_path() have the same root_name(). Otherwise system_complete(p) acts as if absolute(p, cwd) is the current directory for the p.root_name() drive. For programs run by the command processor, however, the current directory for the p.root_name() drive may have been set by a prior program, and this may have unintended consequences.  — end example ]