Escape-последовательности для char8_t и unsigned char

Попытка использовать escape-последовательности для построения char8_tstring (чтобы не полагаться на кодировку файла/компилятора), у меня возникла проблема с MSVC.

Интересно, это ошибка или это зависит от реализации.
Есть ли обходной путь?

      constexpr char8_t s1[] =     u8"\xe3\x82\xb3 \xe3\x83\xb3 \xe3\x83\x8b \xe3\x83\x81 \xe3\x83\x8f";
constexpr unsigned char s2[] = "\xe3\x82\xb3 \xe3\x83\xb3 \xe3\x83\x8b \xe3\x83\x81 \xe3\x83\x8f";
//constexpr char8_t s3[] = u8"コ ン ニ チ ハ";

static_assert(std::equal(std::begin(s1), std::end(s1),
                         std::begin(s2), std::end(s2))); // Fail on msvc

Демо

Примечание. Конечная цель — заменить std::filesystem::u8path(s2)( std::filesystem::u8path устарел, начиная с C++20) std::filesystem::path(s1);

0 ответов

Другие вопросы по тегам