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