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