In C ++ 20 u8
basieren String-Literale auf dem char8_t
Typ. Sie konvertieren absichtlich nicht char const*
mehr zu:
const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20
Das ultimative Ziel bei der Migration auf C ++ 20 ist natürlich, das neue Verhalten vollständig zu übernehmen (im obigen Beispiel: Ändern Sie den Typ von str
). Aufgrund von Bibliotheken von Drittanbietern ist dies jedoch häufig nicht sofort möglich.
Die Vorschläge, die dies einführen und "beheben", nehmen dies char8_t
vorweg und erwähnen, dass es in clang und gcc das -fno-char8_t
Flag gibt, um zum alten Verhalten zurückzukehren (während weiterhin andere C ++ 20-Funktionen genutzt werden können).
Der zweite Vorschlag legt die Erwartung fest, dass Microsoft folgen und ein ähnliches Flag hinzufügen wird, aber ich konnte nicht finden, wie es gesetzt werden soll (zumindest in VS 2019, Version 16.4).
Weiß also jemand, wofür das MSVC-Äquivalent -fno-char8_t
ist?