File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -25,6 +25,9 @@ template <typename T>
2525concept std_integer =
2626 std::integral<std::remove_cv_t <T>> && (!std_bool<T>) && (!std_char<T>);
2727
28+ template <typename T>
29+ concept std_numeric = std_integer<T> || std_floating<T>;
30+
2831template <typename T>
2932concept std_underlying_type =
3033 std_bool<T> || std_char<T> || std_integer<T> || std_floating<T>;
@@ -122,5 +125,27 @@ concept underlying_type =
122125 underlying::details::has_std_rep_type<T> &&
123126 underlying::details::has_consistent_category<T>;
124127
128+ template <typename T>
129+ concept boolean_underlying_type =
130+ underlying_type<T> && (underlying::traits<std::remove_cv_t <T>>::kind ==
131+ underlying::category::boolean);
132+
133+ template <typename T>
134+ concept character_underlying_type =
135+ underlying_type<T> && (underlying::traits<std::remove_cv_t <T>>::kind ==
136+ underlying::category::character);
137+
138+ template <typename T>
139+ concept integer_underlying_type =
140+ underlying_type<T> && (underlying::traits<std::remove_cv_t <T>>::kind ==
141+ underlying::category::integer);
142+
143+ template <typename T>
144+ concept floating_underlying_type =
145+ underlying_type<T> && (underlying::traits<std::remove_cv_t <T>>::kind ==
146+ underlying::category::floating);
147+
148+ template <typename T>
149+ concept numeric_underlying_type = integer_underlying_type<T> || floating_underlying_type<T>;
125150} // namespace mcpplibs::primitives
126151
You can’t perform that action at this time.
0 commit comments