У 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?