No C ++, 20 u8
literais de string são baseados no char8_t
tipo. 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_t
sinalizador 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
?