Created on 2016-06-14.00:00:00 last changed 90 months ago
Proposed resolution:
This wording is relative to N4606.
Edit [fs.path.append]/4-5 as indicated:
template <class Source> path& operator/=(const Source& source); template <class Source> path& append(const Source& source);-?- Effects: Equivalent to return operator/=(path(source));.
template <class InputIterator> path& append(InputIterator first, InputIterator last);-4- Effects: Equivalent to return operator/=(path(first, last));.
Appends path::preferred_separator to pathname, converting format and encoding if required ([fs.path.cvt]), unless:
— an added directory-separator would be redundant, or— an added directory-separator would change an relative path to an absolute path, or— source.empty() is true, or— *source.native().cbegin() is a directory-separator.
Then appends the effective range of source ([fs.path.req]) or the range [first, last) to pathname, converting format and encoding if required ([fs.path.cvt]).
-5- Returns: *this.
[ 2016-08 Chicago ]
Wed AM: Move to Tentatively Ready
Friday AM, in discussing 2664 a comment about missing "equivalent to" language was made, so PR updated.
Previous Resolution [SUPERSEDED]
This wording is relative to N4594.
Edit [fs.path.append]/4-5 as indicated:
template <class Source> path& operator/=(const Source& source); template <class Source> path& append(const Source& source);-?- Effects: operator/=(path(source))
-?- Returns: *this.template <class InputIterator> path& append(InputIterator first, InputIterator last);-4- Effects:
Appends path::preferred_separator to pathname, converting format and encoding if required ([fs.path.cvt]), unless:
an added directory-separator would be redundant, or
an added directory-separator would change an relative path to an absolute path, or
source.empty() is true, or
*source.native().cbegin() is a directory-separator.-5- Returns: *this.
Then appends the effective range of source ([fs.path.req]) or the range [first, last) to pathname, converting format and encoding if required ([fs.path.cvt])operator/=(path(first, last)).
[ 2016-07-03, Daniel comments ]
The same wording area is affected by LWG 2664.
The current specification of operator/= taking a const Source& parameter, and of path::append in [fs.path.append] appears to require Source to have a native() and an empty() member, and seemingly requires different behavior for append(empty_range) and append(first, last) when first == last (the last two bullet points being specified with source alone), which doesn't make any sense.
It appears that these overloads can just be specified using the operator/=(const path&) overload.History | |||
---|---|---|---|
Date | User | Action | Args |
2017-07-30 20:15:43 | admin | set | status: wp -> c++17 |
2016-11-14 03:59:28 | admin | set | status: pending -> wp |
2016-11-14 03:55:22 | admin | set | status: ready -> pending |
2016-08-04 02:52:49 | admin | set | messages: + msg8387 |
2016-08-04 02:52:49 | admin | set | status: new -> ready |
2016-07-03 12:47:54 | admin | set | messages: + msg8225 |
2016-07-03 12:16:07 | admin | set | messages: + msg8223 |
2016-06-14 00:00:00 | admin | create |