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

В 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 является?

1 ответ

Решение

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

Другие вопросы по тегам