W C ++ 20 u8literałów łańcuchowych jest opartych na char8_ttypie. Celowo nie przechodzą już na char const*:
const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20
Oczywiście ostatecznym celem migracji do C ++ 20 jest całkowite przejście na nowe zachowanie (w powyższym przykładzie: zmiana typu str). Jednak ze względu na biblioteki stron trzecich często nie jest to możliwe natychmiast.
Propozycje, które wprowadzają i „naprawiają”, char8_t przewidują to i wspominają, że w clang i gcc jest -fno-char8_tflaga, aby powrócić do starego zachowania (wciąż będąc w stanie cieszyć się innymi funkcjami C ++ 20).
Druga propozycja określa oczekiwanie, że Microsoft podąży za nią i doda podobną flagę, ale nie udało mi się znaleźć sposobu jej ustawienia (przynajmniej w VS 2019, wersja 16.4).
Czy ktoś wie, czym jest odpowiednik MSVC -fno-char8_t?