Quel est l'équivalent MSVC pour -fno-char8_t?


9

En C ++ 20, u8les littéraux de chaîne sont basés sur le char8_ttype. 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_tdrapeau 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_tEst- ce que quelqu'un sait à quoi correspond l'équivalent MSVC ?

Réponses:


8

Depuis 16.1, il y a le drapeau du compilateur de conformité /Zc:char8_t-. Le signe moins indique au compilateur de ne pas utiliser le mode de conformité ici lors de l'utilisation de C ++ 20. Au contraire, /Zc:char8_tpeut être utilisé pour l'activer.


1
Oh, bon endroit. J'étais sur le point d'écrire une réponse en disant qu'il n'y en a pas :)
Courses de légèreté en orbite

1
@LightnessRaceswithMonica merci d'avoir ajouté la référence!
Guillaume Racicot

Pensé que je devais contribuer quelque chose : P
Courses de légèreté en orbite

Amélioré un peu aussi, car c'est quelque chose que je voulais savoir; donc je devrais aussi contribuer: P
Acorn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.