libstdc++: Fix experimental::filesystem::u8path(const Source&) for Windows
authorJonathan Wakely <jwakely@redhat.com>
Sat, 30 Nov 2019 01:03:36 +0000 (01:03 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Sat, 30 Nov 2019 01:03:36 +0000 (01:03 +0000)
commit3eda32cb9b534f89f37c7155cdd8be2d9a5de7a4
treedb412b30ab370c30397b51579c4e9e7bdfc21116
parentaa80d0650ce612d88a62d072b63c2523d547fca8
libstdc++: Fix experimental::filesystem::u8path(const Source&) for Windows

This function failed to compile when called with a std::string.

Also, constructing a path with a char8_t string did not correctly treat
the string as already UTF-8 encoded.

* include/bits/fs_path.h (u8path(InputIterator, InputIterator))
(u8path(const Source&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Simplify
conditions.
* include/experimental/bits/fs_path.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
(__u8path(const Source&, char)): Add overloads for std::string and
types convertible to std::string.
(_Cvt::_S_wconvert): Add a new overload for char8_t strings and use
codecvt_utf8_utf16 to do the correct conversion.

From-SVN: r278869
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/fs_path.h
libstdc++-v3/include/experimental/bits/fs_path.h