¿Cuál es el equivalente de MSVC para -fno-char8_t?

9

En C ++ 20 u8los literales de cadena se basan en el char8_ttipo. Deliberadamente ya no se convierten a char const*:

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

Por supuesto, el objetivo final cuando se migra a C ++ 20 es ir completamente con el nuevo comportamiento (en el ejemplo anterior: cambiar el tipo de str). Sin embargo, debido a las bibliotecas de terceros, esto a menudo no es posible de inmediato.

Las propuestas que introducen y "remedian" char8_t anticipan eso y mencionan que en clang y gcc existe la -fno-char8_tbandera para volver al comportamiento anterior (sin dejar de poder disfrutar de otras características de C ++ 20).

La segunda propuesta establece la expectativa de que Microsoft seguirá y agregará un indicador similar, pero no pude encontrar cómo configurarlo (al menos en VS 2019, Versión 16.4).

Entonces, ¿alguien sabe cuál es el equivalente de MSVC -fno-char8_t?

Tobi
fuente

Respuestas:

8

Desde 16.1, existe el indicador del compilador de conformidad /Zc:char8_t-. El signo negativo le dice al compilador que no use el modo de conformidad aquí cuando usa C ++ 20. Por el contrario, /Zc:char8_tse puede utilizar para habilitarlo.

Racicot Guillaume
fuente
1
Oh, buen lugar. Estaba a punto de escribir una respuesta diciendo que no hay una :)
Lightness Races in Orbit
1
@LightnessRaceswithMonica gracias por agregar la referencia!
Guillaume Racicot
Pensé que debería contribuir con algo : P
Las carreras ligeras en órbita el
También lo mejoré un poco, ya que es algo que quería saber; así que debería contribuir también: P
Bellota