16 #ifndef OPENKALMAN_VALUES_COMPLEX_TYPE_OF_T_HPP 17 #define OPENKALMAN_VALUES_COMPLEX_TYPE_OF_T_HPP 19 #include <type_traits> 36 template<
typename T,
typename =
void,
typename =
void>
38 struct complex_type_of {};
43 template<value T> requires requires { internal::make_complex_number<value_type_of_t<T>>(std::declval<T>()); }
44 struct complex_type_of<T>
47 struct complex_type_of<T,
std::enable_if_t<value<T>>,
48 std::void_t<decltype(internal::make_complex_number<value_type_of_t<T>>(std::declval<T>()))>>
51 using type = std::decay_t<decltype(internal::make_complex_number<value_type_of_t<T>>(std::declval<T>()))>;
59 using complex_type_of_t =
typename complex_type_of<T>::type;
Definition for value:value_type_of and value:value_type_of_t.
Definition for values::abs.
Definition: fixed-constants.hpp:23
Definition for values::value.