Что такое эквивалент 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?

Tobi
источник

Ответы:

8

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

Гийом Расико
источник
1
О, хорошее место. Я собирался написать ответ о том, что его нет :)
Гонки
1
@LightnessRaceswithMonica спасибо за добавление ссылки!
Гийом Расикот
Я подумал, что должен что-то внести : P
Гонки
Я тоже немного его улучшил, потому что это то, что я хотел знать; поэтому я тоже должен внести свой вклад: P
Желудь