30 Input/output library [input.output]

30.10 File systems [filesystems]

30.10.27 Class path [fs.class.path]

30.10.27.2 path conversions [fs.path.cvt]

30.10.27.2.2 path type and encoding conversions [fs.path.type.cvt]

Для аргументов функций-членов, которые принимают последовательности символов, представляющих пути, и для функций-членов, возвращающих строки, преобразование типа значения и кодировки выполняется, если тип значения аргумента или возвращаемого значения отличается от path​::​value_­type. Для аргумента или возвращаемого значения метод преобразования и кодировка, в которую нужно преобразовать, определяются его типом значения:

  • char: Кодировка является собственной узкой кодировкой ([fs.def.native.encode]). Метод преобразования, если таковой имеется, зависит от операционной системы. [ Note: Для POSIX операционных систем на основе path​::​value_­type является char поэтому не преобразование из char аргументов типа значения или char значений типа возвращаемого значения не выполняется. Для операционных систем на базе Windows собственная узкая кодировка определяется путем вызова функции Windows API. ] [ Это приводит к поведению, аналогичному поведению других стандартных библиотечных функций C и C ++, которые выполняют файловые операции с использованием узких строк символов для определения путей. Изменение такого поведения может вызвать удивление и привести к ошибкам. ] end noteNote: end note

  • wchar_­t: Кодировка native wide encoding. Метод преобразования не указан. [ Note: Для операционных систем на базе Windows не path​::​value_­type выполняется wchar_­t преобразование из wchar_­t аргументов типа значения или в wchar_­t возвращаемые значения типа значения. ] end note

  • char16_­t: Кодировка - UTF-16. Метод преобразования не указан.

  • char32_­t: Кодировка - UTF-32. Метод преобразования не указан.

Если преобразуемая кодировка не имеет представления для исходных символов, результирующие преобразованные символы, если таковые имеются, не определены. Реализации не должны изменять аргументы функций-членов, если они уже имеют тип path​::​value_­type.