File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -51,6 +51,43 @@ using default_policies =
5151template <typename T>
5252using traits = details::primitive_traits_impl<std::remove_cvref_t <T>>;
5353
54+ template <typename T>
55+ concept primitive_type = requires {
56+ typename traits<T>::value_type;
57+ typename traits<T>::policies;
58+ typename traits<T>::value_policy;
59+ typename traits<T>::type_policy;
60+ typename traits<T>::error_policy;
61+ typename traits<T>::concurrency_policy;
62+ };
63+
64+ template <typename T>
65+ concept boolean =
66+ primitive_type<T> &&
67+ (underlying::traits<typename traits<T>::value_type>::kind ==
68+ underlying::category::boolean);
69+
70+ template <typename T>
71+ concept character =
72+ primitive_type<T> &&
73+ (underlying::traits<typename traits<T>::value_type>::kind ==
74+ underlying::category::character);
75+
76+ template <typename T>
77+ concept integer =
78+ primitive_type<T> &&
79+ (underlying::traits<typename traits<T>::value_type>::kind ==
80+ underlying::category::integer);
81+
82+ template <typename T>
83+ concept floating =
84+ primitive_type<T> &&
85+ (underlying::traits<typename traits<T>::value_type>::kind ==
86+ underlying::category::floating);
87+
88+ template <typename T>
89+ concept numeric = integer<T> || floating<T>;
90+
5491} // namespace mcpplibs::primitives::meta
5592
5693// Backward-compatible aliases for existing downstream users.
You can’t perform that action at this time.
0 commit comments