11 [[nodiscard]]
constexpr unicode_composition(
char32_t first,
char32_t second,
char32_t composed = 0) noexcept :
12 value(
static_cast<int64_t
>(first) << 42 |
static_cast<int64_t
>(second) << 21 |
static_cast<int64_t
>(composed))
14 tt_axiom(first <= 0x10'ffff);
15 tt_axiom(second <= 0x10'ffff);
16 tt_axiom(composed <= 0x10'ffff);
19 [[nodiscard]]
constexpr char32_t first()
const noexcept
21 return static_cast<char32_t>(value >> 42);
24 [[nodiscard]]
constexpr char32_t second()
const noexcept
26 return static_cast<char32_t>((value >> 21) & 0x1f'ffff);
29 [[nodiscard]]
constexpr char32_t composed()
const noexcept
31 return static_cast<char32_t>(value & 0x1f'ffff);
36 return lhs.value < rhs.value;
42 return (lhs.value >> 21) == (rhs.value >> 21);
50[[nodiscard]]
constexpr It unicode_composition_find(It first, It last,
unicode_composition value)
noexcept
53 if (it == last || *it != value) {
61[[nodiscard]]
constexpr It unicode_composition_find(It first, It last,
char32_t first_cp,
char32_t second_cp)
noexcept
63 return unicode_composition_find(first, last, unicode_composition{first_cp, second_cp});
69[[nodiscard]]
char32_t unicode_composition_find(
char32_t first,
char32_t second)
noexcept;
Definition unicode_composition.hpp:9