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機能は引き続き利用可能です)。
2番目の提案は、Microsoftが同様のフラグに従い、追加するという期待を設定していますが、設定方法を見つけることができませんでした(少なくともVS 2019、バージョン16.4)。
では、MSVCと同等のものは誰か知ってい-fno-char8_t
ますか?