【发布时间】:2020-04-07 02:29:09
【问题描述】:
在 C++20 中,u8 字符串文字基于 char8_t 类型。他们故意不再转换为char const*:
const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20
当然,迁移到 C++20 的最终目标是完全采用新行为(在上面的示例中:更改 str 的类型)。但是,由于有 3rd 方库,这通常无法立即实现。
introduce 和 "remedy" char8_t 的提议预见到了这一点,并提到在 clang 和 gcc 中有 -fno-char8_t 标志可以切换回旧的行为(同时仍然能够享受其他 C++ 20 个功能)。
第二个提案设定了微软将遵循并添加类似标志的期望,但我无法找到如何设置它(至少在 VS 2019 版本 16.4 中)。
那么有人知道-fno-char8_t 对应的 MSVC 是什么吗?
【问题讨论】:
标签: c++ visual-c++ visual-studio-2019 c++20 char8-t