64 [[nodiscard]]
static consteval bool MatchesRule(FormatArgumentRule rule)
66 if (rule == FormatArgumentRule::None)
73 case FormatArgumentRule::SignedAny:
74 return is_default_signed_integer;
75 case FormatArgumentRule::SignedChar:
76 return std::is_same_v<Normalized, signed char>;
77 case FormatArgumentRule::SignedShort:
78 return std::is_same_v<Normalized, short>;
79 case FormatArgumentRule::SignedLong:
80 return std::is_same_v<Normalized, long>;
81 case FormatArgumentRule::SignedLongLong:
82 return std::is_same_v<Normalized, long long>;
83 case FormatArgumentRule::SignedIntMax:
84 return std::is_same_v<Normalized, intmax_t>;
85 case FormatArgumentRule::SignedSize:
86 return std::is_same_v<Normalized, std::make_signed_t<size_t>>;
87 case FormatArgumentRule::SignedPtrDiff:
88 return std::is_same_v<Normalized, ptrdiff_t>;
89 case FormatArgumentRule::UnsignedAny:
90 return is_default_unsigned_integer;
91 case FormatArgumentRule::UnsignedChar:
92 return std::is_same_v<Normalized, unsigned char>;
93 case FormatArgumentRule::UnsignedShort:
94 return std::is_same_v<Normalized, unsigned short>;
95 case FormatArgumentRule::UnsignedLong:
96 return std::is_same_v<Normalized, unsigned long>;
97 case FormatArgumentRule::UnsignedLongLong:
98 return std::is_same_v<Normalized, unsigned long long>;
99 case FormatArgumentRule::UnsignedIntMax:
100 return std::is_same_v<Normalized, uintmax_t>;
101 case FormatArgumentRule::UnsignedSize:
102 return std::is_same_v<Normalized, size_t>;
103 case FormatArgumentRule::UnsignedPtrDiff:
104 return std::is_same_v<Normalized, std::make_unsigned_t<ptrdiff_t>>;
105 case FormatArgumentRule::Pointer:
106 return is_pointer_like;
107 case FormatArgumentRule::Character:
108 return is_character_like;
109 case FormatArgumentRule::String:
110 return is_string_like;
111 case FormatArgumentRule::Float:
113 case FormatArgumentRule::LongDouble:
114 return is_long_double;