27 Input/output library [input.output]

27.10 File systems [filesystems]

27.10.15 Filesystem operation functions [fs.op.funcs]

27.10.15.40 Weakly Canonical [fs.op.weakly_canonical]

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

Returns: p with symlinks resolved and the result normalized ([fs.def.normal.form]).

Effects: Using status(p) or status(p, ec), respectively, to determine existence, return a path composed by operator/= from the result of calling canonical() without a base argument and with a path argument composed of the leading elements of p that exist, if any, followed by the elements of p that do not exist, if any. For the first form, canonical() is called without an error_code argument. For the second form, canonical() is called with ec as an error_code argument, and path() is returned at the first error occurrence, if any.

Postconditions: The returned path is in normal form ([fs.def.normal.form]).

Remarks: Implementations are encouraged to avoid unnecessary normalization such as when canonical() has already been called on the entirety of p.

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