Что такое эквивалент MSVC для -fno-char8_t?


9

В C ++ 20 u8строковых литералов основаны на char8_tтипе. Они сознательно больше не переходят в char const*:

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

Конечно, конечная цель при переходе на C ++ 20 - полностью перейти на новое поведение (в приведенном выше примере: изменить тип str). Однако из-за сторонних библиотек это часто невозможно сразу.

Предложения, которые вводят и «исправляют», char8_t предвидят это и упоминают, что в clang и gcc есть -fno-char8_tфлаг для возврата к старому поведению (при этом все еще имея возможность пользоваться другими функциями C ++ 20).

Второе предложение устанавливает ожидание того, что Microsoft последует и добавит аналогичный флаг, но я не смог найти, как его установить (по крайней мере, в VS 2019, версия 16.4).

Так кто-нибудь знает, что такое эквивалент MSVC -fno-char8_t?

Ответы:


8

Начиная с 16.1, существует флаг компилятора соответствия /Zc:char8_t-. Минус говорит компилятору не использовать здесь режим соответствия при использовании C ++ 20. Напротив, /Zc:char8_tможет быть использовано, чтобы включить его.


1
О, хорошее место. Я собирался написать ответ о том, что его нет :)
Гонки

1
@LightnessRaceswithMonica спасибо за добавление ссылки!
Гийом Расикот

Я подумал, что должен что-то внести : P
Гонки

Я тоже немного его улучшил, потому что это то, что я хотел знать; поэтому я тоже должен внести свой вклад: P
Желудь
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.