26#ifndef LIBSBX_MATH_CONCEPTS_HPP_
27#define LIBSBX_MATH_CONCEPTS_HPP_
47template<
typename Type>
48concept numeric = (std::is_integral_v<Type> && !std::is_same_v<Type, bool>) || std::is_floating_point_v<Type>;
55template<
typename Type>
63template<
typename Type>
71template<
typename Type>
79template<
typename Type>
80struct is_integral : std::bool_constant<std::is_integral_v<Type> && !std::is_same_v<Type, bool>> { };
87template<
typename Type>
95template<
typename Type>
103template<
typename Type>
111template<
typename Type>
119template<
typename Type>
133template<
typename Type>
134struct is_scalar : std::bool_constant<is_floating_point_v<Type> || is_integral_v<Type>> { };
141template<
typename Type>
149template<
typename Type>
Concept for floating-point types.
Definition: concepts.hpp:72
Concept for non-boolean integral types.
Definition: concepts.hpp:96
Concept for numeric types.
Definition: concepts.hpp:48
Concept for scalar numeric types.
Definition: concepts.hpp:150
Concept for unsigned integral types.
Definition: concepts.hpp:120
constexpr bool is_floating_point_v
Convenience variable for is_floating_point.
Definition: concepts.hpp:64
constexpr bool is_integral_v
Convenience variable for is_integral.
Definition: concepts.hpp:88
constexpr bool is_unsigned_integral_v
Convenience variable for is_unsigned_integral.
Definition: concepts.hpp:112
constexpr bool is_scalar_v
Convenience variable for is_scalar.
Definition: concepts.hpp:142
Type trait identifying floating-point types.
Definition: concepts.hpp:56
Type trait identifying non-boolean integral types.
Definition: concepts.hpp:80
Type trait identifying scalar types.
Definition: concepts.hpp:134
Type trait identifying unsigned integral types.
Definition: concepts.hpp:104