16 #ifndef OPENKALMAN_DESCRIPTORS_SCALAR_TYPE_OF_HPP 17 #define OPENKALMAN_DESCRIPTORS_SCALAR_TYPE_OF_HPP 19 #include <type_traits> 20 #include "linear-algebra/coordinates/interfaces/coordinate_descriptor_traits.hpp" 35 template<
typename T,
typename =
void,
typename =
void>
48 template<descriptor T> requires
54 std::void_t<typename interface::coordinate_descriptor_traits<std::decay_t<T>>::scalar_type>>
62 template<descriptor_range T> requires
63 requires {
typename interface::coordinate_set_traits<std::decay_t<T>>::scalar_type; }
68 std::void_t<typename interface::coordinate_set_traits<std::decay_t<T>>::scalar_type>>
71 using type =
typename interface::coordinate_set_traits<std::decay_t<T>>::scalar_type;
76 template<descriptor_tuple T> requires (not descriptor_range<T>) and
77 requires {
typename interface::coordinate_set_traits<std::decay_t<T>>::scalar_type; }
82 std::void_t<typename interface::coordinate_set_traits<std::decay_t<T>>::scalar_type>>
85 using type =
typename interface::coordinate_set_traits<std::decay_t<T>>::scalar_type;
91 #endif //OPENKALMAN_DESCRIPTORS_SCALAR_TYPE_OF_HPP Definition: tuple_reverse.hpp:103
Definition for coordinates::pattern.
Definition for coordinates::descriptor.
Definition: compares_with.hpp:28
Definition for pattern_range.
Traits for coordinates::pattern objects.
Definition: coordinate_descriptor_traits.hpp:41
The scalar type, if any, associated with a coordinates::pattern.
Definition: scalar_type_of_deprecated.hpp:37
typename scalar_type_of< T >::type scalar_type_of_t
Helper template for scalar_type_of.
Definition: scalar_type_of_deprecated.hpp:44