Apa persamaan MSVC untuk -fno-char8_t?


9

Dalam C ++ 20 u8string literal didasarkan pada char8_tjenisnya. 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_tbendera 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?

Jawaban:


8

Sejak 16.1, ada flag compiler kesesuaian /Zc:char8_t-. Tanda minus memberitahu kompiler untuk tidak menggunakan mode kesesuaian di sini saat menggunakan C ++ 20. Sebaliknya, /Zc:char8_tbisa digunakan untuk mengaktifkannya.


1
Oh, tempat yang bagus. Saya baru akan menulis jawaban yang mengatakan tidak ada :)
Lightness Races in Orbit

1
@LightnessRaceswithMonica terima kasih telah menambahkan referensi!
Guillaume Racicot

Kupikir aku harus berkontribusi sesuatu : P
Lightness Races in Orbit

Sedikit membaik juga, karena itu adalah sesuatu yang ingin saya ketahui; jadi saya harus berkontribusi juga: P
Acorn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.