template <class Source>
path u8path(const Source& source);
template <class InputIterator>
path u8path(InputIterator first, InputIterator last);
Requires: Последовательности source и [first, last) кодируются в кодировке UTF-8. Тип значения Source и InputIterator есть char.
Returns:
Если value_type есть, char а текущий native narrow encoding - UTF-8, вернуть path(source) или path(first, last); иначе,
если value_type есть, wchar_t а собственная широкая кодировка - UTF-16, или если value_type есть, char16_t или char32_t, преобразовать source или [first, last) во временное, tmpтипа string_type и возврата path(tmp); иначе,
преобразовать source или [first, last) во временное, tmpтипа u32string и возврата path(tmp).
Remarks: Argument format conversion применяется к аргументам этих функций. Как выполняется преобразование кодировки Unicode, не указано.
[ Example: Строка должна быть прочитана из базы данных, закодированной в UTF-8, и использована для создания каталога с использованием собственной кодировки для имен файлов:
namespace fs = std::filesystem; std::string utf8_string = read_utf8_data(); fs::create_directory(fs::u8path(utf8_string));
Для операционных систем на основе POSIX с собственной узкой кодировкой, установленной на UTF-8, кодирование или преобразование типов не происходит.
Для операционных систем на основе POSIX, в которых для собственной узкой кодировки не задано значение UTF-8, происходит преобразование в UTF-32, за которым следует преобразование в текущую собственную узкую кодировку. Некоторые символы Unicode могут не иметь собственного представления набора символов.
Для операционных систем на базе Windows происходит преобразование из UTF-8 в UTF-16. ] — end example