#include void empty_symbol() { } static constexpr auto Pattern = ctll::fixed_string{ LR"(^\s*(\d+)\s+:(\S):$(\S+?)$(\S+?)$(\S+))" }; static_assert(Pattern.size() == 38); // ordinary string is taken as array of bytes #ifdef CTRE_STRING_IS_UTF8 static_assert(ctll::fixed_string("ฤ›ลกฤ").size() == 3); static_assert(ctll::fixed_string("๐Ÿ˜").size() == 1); static_assert(ctll::fixed_string("๐Ÿ˜")[0] == L'๐Ÿ˜'); #else static_assert(ctll::fixed_string("ฤ›ลกฤ").size() == 6); // it's just a bunch of bytes static_assert(ctll::fixed_string("๐Ÿ˜").size() == 4); // it's just a bunch of bytes #endif #if __cpp_char8_t // u8"" is utf-8 encoded static_assert(ctll::fixed_string(u8"ฤ›ลกฤ").size() == 3); static_assert(ctll::fixed_string(u8"๐Ÿ˜").size() == 1); static_assert(ctll::fixed_string(u8"๐Ÿ˜")[0] == U'๐Ÿ˜'); #endif // u"" is utf-16 static_assert(ctll::fixed_string(u"ฤ›ลกฤ").size() == 3); static_assert(ctll::fixed_string(u"๐Ÿ˜").size() == 1); static_assert(ctll::fixed_string(u"๐Ÿ˜").is_same_as(ctll::fixed_string(U"๐Ÿ˜"))); // U"" is utf-32 static_assert(ctll::fixed_string(U"ฤ›ลกฤ").size() == 3); static_assert(ctll::fixed_string(U"๐Ÿ˜").size() == 1); // everything is converted into utf-32