fsAppend
- это абсолютный путь, поскольку он начинается с /
, и вы находитесь в такой системе, как POSIX, где пути, начинающиеся с /
, являются абсолютными.
Добавление одного абсолютного пути к другому абсолютномупуть не имеет никакого смысла (для меня создание исключения было бы самым естественным результатом на самом деле).Каким должен быть результат C:\foo.txt
append C:\bar.txt
?
В experimental::fs
правило гласило: если второй аргумент .native()
начинается с разделителя каталогов, то он обрабатывается как относительный путь для добавленияцелей, даже если это может быть абсолютный путь в других контекстах!
Стандартизированная файловая система четко отличает абсолютные пути от относительных путей, пытаясь избежать этой неоднозначности, возникающей в системах POSIX.
Запись об изменении можно найти в P0492R2 US77.
Обратите внимание, что вы можете использовать +=
вместо /
для объединения (следует делать то, что вы ожидаете), или сделать второй аргумент относительным перед использованием /
.
Также см. этот ответ для дальнейшего сравнения между experimental
и завершенным.