In C ++ 20 u8
i valori letterali delle stringhe si basano sul char8_t
tipo. Non si convertono deliberatamente in char const*
più:
const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20
Ovviamente, l'obiettivo finale durante la migrazione a C ++ 20 è quello di seguire interamente il nuovo comportamento (nell'esempio sopra: cambiare il tipo di str
). Tuttavia, a causa delle librerie di terze parti, ciò spesso non è immediatamente possibile.
Le proposte che introducono e "rimediano" lo char8_t
anticipano e menzionano che in clang e gcc c'è la -fno-char8_t
bandiera per tornare al vecchio comportamento (pur potendo ancora godere di altre funzionalità di C ++ 20).
La seconda proposta stabilisce le aspettative che Microsoft seguirà e aggiungerà un flag simile, ma non sono stato in grado di trovare come impostarlo (almeno in VS 2019, versione 16.4).
Qualcuno sa a cosa serve l'equivalente MSVC -fno-char8_t
?