Операции добавления используются operator/= для обозначения их семантического эффекта добавления preferred-separatorпри необходимости.
path& operator/=(const path& p);
Effects: Если p.is_absolute() || (p.has_root_name() && p.root_name() != root_name()), то operator=(p).
В противном случае изменяется, *this как если бы эти шаги:
Если p.has_root_directory(), то удаляет любой корневой каталог и относительный путь из имени пути общего формата. В противном случае, если !has_root_directory() && is_absolute() есть true или если has_filename() есть true, то добавляется path::preferred_separator к имени пути общего формата.
Затем добавляет путь в собственном формате p, исключая любые root-nameиз его имени пути общего формата, к имени пути в собственном формате.
[ Example: Даже если //host интерпретируются как root-name, оба пути path("//host")/"foo" и path("//host/")/"foo" равны "//host/foo".
Примеры выражений:
// On POSIX, path("foo") / ""; // yields "foo/" path("foo") / "/bar"; // yields "/bar" // On Windows, backslashes replace slashes in the above yields // On Windows, path("foo") / "c:/bar"; // yields "c:/bar" path("foo") / "c:"; // yields "c:" path("c:") / ""; // yields "c:" path("c:foo") / "/bar"; // yields "c:/bar" path("c:foo") / "c:bar"; // yields "c:foo/bar"
— end example ]
template <class Source>
path& operator/=(const Source& source);
template <class Source>
path& append(const Source& source);
template <class InputIterator>
path& append(InputIterator first, InputIterator last);