Какой эквивалент 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
можно использовать для его включения.