Qual é o equivalente MSVC para -fno-char8_t?

9

No C ++, 20 u8literais de string são baseados no char8_ttipo. Eles deliberadamente não se convertem char const*mais:

const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20

Obviamente, o objetivo final ao migrar para o C ++ 20 é seguir completamente o novo comportamento (no exemplo acima: alterar o tipo de str). No entanto, devido às bibliotecas de terceiros, isso geralmente não é possível imediatamente.

As propostas que introduzem e "remediam" char8_t antecipam isso e mencionam que, no clang e no gcc, existe o -fno-char8_tsinalizador para voltar ao comportamento antigo (enquanto ainda é possível aproveitar outros recursos do C ++ 20).

A segunda proposta configura a expectativa de que a Microsoft siga e adicione um sinalizador semelhante, mas não consegui descobrir como configurá-lo (pelo menos no VS 2019, versão 16.4).

Alguém sabe o que é o equivalente ao MSVC -fno-char8_t?

Tobi
fonte

Respostas:

8

Desde 16.1, existe o sinalizador do compilador de conformidade /Zc:char8_t-. O sinal de menos indica ao compilador para não usar o modo de conformidade aqui ao usar o C ++ 20. Pelo contrário, /Zc:char8_tpode ser usado para habilitá-lo.

Guillaume Racicot
fonte
11
Oh, bom local. Eu estava prestes a escrever uma resposta dizendo que não é um :)
Leveza raças na órbita
11
@LightnessRaceswithMonica obrigado por adicionar a referência!
Guillaume Racicot
Pensei que eu deveria contribuir com algo : P
Lightness Races in Orbit
Melhorou um pouco também, já que é algo que eu queria saber; então eu devo contribuir também: P
Acorn