问题
Introduced in c++17, std::filesystem::u8path
seems to be deprecated in c++20.
What is the reason for this choice? What should I use in c++17? What should I use in c++20?
回答1:
Because, thanks to the existence of the C++20 feature char8_t
, this will work:
path p(u8"A/utf8/path");
u8path
existed to allow the detection of the difference between a UTF-8 string and a narrow character string. But since C++20 will give us an actual type for that, it is no longer necessary.
What should I use in c++17?
Use u8path
. Deprecation does not mean removed or inaccessible. It merely means subject to eventual removal.
At present, in C++20 u8path(u8"A/UTF8/String")
will fail to compile in C++20 due to u8
now creating a char8_t
string. But C++20 may be getting a change to u8path that takes char8_t strings.
来源:https://stackoverflow.com/questions/54004000/why-is-stdfilesystemu8path-deprecated-in-c20