17 using char_type = hi::agrapheme;
18 using int_type = hi::agrapheme::value_type;
22 using comparison_category = std::strong_ordering;
24 static constexpr void assign(char_type& r, char_type
const& a)
noexcept
37 [[nodiscard]]
static constexpr bool eq(char_type a, char_type b)
noexcept
42 [[nodiscard]]
static constexpr bool lt(char_type a, char_type b)
noexcept
47 static constexpr char_type *
move(char_type *dst, char_type
const *src,
std::size_t count)
noexcept
55 dst[i - 1] = src[i - 1];
61 static constexpr char_type *
copy(char_type *dst, char_type
const *src,
std::size_t count)
noexcept
73 return s1[i] < s2[i] ? -1 : 1;
82 while (not s[i].empty()) {
88 static constexpr char_type
const *
find(
const char_type *p,
std::size_t count,
const char_type& ch)
noexcept
98 static constexpr char_type
to_char_type(int_type c)
noexcept
105 static constexpr int_type
to_int_type(char_type c)
noexcept
110 static constexpr bool eq_int_type(int_type c1, int_type c2)
noexcept
115 static constexpr int_type
eof()
noexcept
118 return 0x1f'ffffULL << 43;
121 static constexpr int_type
not_eof(int_type e)
noexcept
124 return e ==
eof() ? (0xfffdULL << 43) : e;