Dalam C ++ 20 u8
string literal didasarkan pada char8_t
jenisnya. Mereka dengan sengaja tidak mengonversi ke char const*
lagi:
const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20
Tentu saja, tujuan akhir ketika bermigrasi ke C ++ 20 adalah sepenuhnya mengikuti perilaku baru (dalam contoh di atas: ubah jenis str
). Namun, karena perpustakaan pihak ke-3, ini seringkali tidak dapat segera dilakukan.
Proposal yang memperkenalkan dan "memperbaiki" char8_t
mengantisipasi hal itu dan menyebutkan bahwa dalam dentang dan gcc ada -fno-char8_t
bendera untuk kembali ke perilaku lama (sementara masih dapat menikmati fitur C ++ 20 lainnya).
Proposal ke-2 mengatur harapan bahwa Microsoft akan mengikuti dan menambahkan bendera yang serupa, tetapi saya tidak dapat menemukan cara mengaturnya (setidaknya dalam VS 2019, Versi 16.4).
Jadi, adakah yang tahu untuk apa MSVC -fno-char8_t
?