The append operations use operator/= to denote their semantic effect of appending preferred-separator when needed.
Requires: !p.has_root_name().
Effects: Appends path::preferred_separator to pathstring unless:
an added directory-separator would be redundant, or
an added directory-separator would change a relative path into an absolute path [ Note: An empty path is relative. — end note ], or
p.empty() is true, or
*p.native().cbegin() is a directory-separator.
Then appends p.native() to pathstring.
Returns: *this.
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);
Effects: Equivalent to: return operator/=(path(first, last));