En C ++ 20, u8
les littéraux de chaîne sont basés sur le char8_t
type. Ils ne se convertissent délibérément char const*
plus:
const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20
Bien sûr, le but ultime lors de la migration vers C ++ 20 est de suivre entièrement le nouveau comportement (dans l'exemple ci-dessus: changer le type de str
). Cependant, en raison des bibliothèques tierces, cela n'est souvent pas possible immédiatement.
Les propositions qui introduisent et "remédient" l' char8_t
anticipent et mentionnent que dans clang et gcc, il y a le -fno-char8_t
drapeau pour revenir à l'ancien comportement (tout en pouvant profiter d'autres fonctionnalités C ++ 20).
La 2e proposition établit l'espoir que Microsoft suivra et ajoutera un indicateur similaire, mais je n'ai pas pu trouver comment le définir (au moins dans VS 2019, version 16.4).
-fno-char8_t
Est- ce que quelqu'un sait à quoi correspond l'équivalent MSVC ?