22#if MOCHI_LANGUAGE_CPP20
31inline constexpr bool IsPrimitiveShapeDef =
false;
34inline constexpr bool IsSdfBvDef =
false;
38template <
class T,
class =
void>
41 std::is_arithmetic_v<T>,
42 "ScalarType<T>: T is not a recognized scalar type and has no ScalarTypeDef specialization.");
43 using type = std::remove_cv_t<T>;
48struct ScalarTypeDef<T, std::void_t<typename T::Scalar>> {
49 using type =
typename ScalarTypeDef<std::decay_t<typename T::Scalar>>::type;
54#if MOCHI_LANGUAGE_CPP20
74concept IsSdfBv = details::IsSdfBvDef<std::decay_t<T>>;
77inline constexpr bool IsPrimitiveShape = details::IsPrimitiveShapeDef<std::decay_t<T>>;
80inline constexpr bool IsSdfBv = details::IsSdfBvDef<std::decay_t<T>>;
87using ScalarType =
typename details::ScalarTypeDef<std::decay_t<T>>::type;
Empty object when no value is needed.