Qual è l'equivalente MSVC per -fno-char8_t?


9

In C ++ 20 u8i valori letterali delle stringhe si basano sul char8_ttipo. 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_tbandiera 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?

Risposte:


8

Dalla 16.1 è presente il flag del compilatore di conformità /Zc:char8_t-. Il meno indica al compilatore di non utilizzare la modalità di conformità qui quando si utilizza C ++ 20. Al contrario, /Zc:char8_tpuò essere utilizzato per abilitarlo.


1
Oh, buon posto. Stavo per scrivere una risposta dicendo che non ce n'è una :)
Lightness Races in Orbit il

1
@LightnessRaceswithMonica grazie per aver aggiunto il riferimento!
Guillaume Racicot,

Ho pensato di dover contribuire con qualcosa : P
Razze di leggerezza in orbita,

Anche un po 'migliorato, dal momento che è qualcosa che volevo sapere; quindi dovrei contribuire anche io: P
Ghianda
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.