2670. system_complete refers to undefined variable 'base'

Section: 99 [fs.op.system_complete] Status: C++17 Submitter: Jonathan Wakely Opened: 2014-07-20 Last modified: 2017-07-30

Priority: 0

View all issues with C++17 status.

Discussion:

The example says "...or p and base have the same root_name().", but base is not defined. I believe it refers to the value returned by current_path().

[Apr 2016 Issue updated to address the C++ Working Paper. Previously addressed File System TS]

Proposed resolution:

Change 99 [fs.op.system_complete] as indicated:

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 base current_path() have the same root_name(). Otherwise it acts like absolute(p, cwd) is the current directory for the p.root_name() drive. This will be the current directory for that drive the last time it was set, and thus may be residue left over from a prior program run by the command processor. Although these semantics are useful, they may be surprising.