16 #ifndef OPENKALMAN_TRIANGLE_TYPE_OF_HPP 17 #define OPENKALMAN_TRIANGLE_TYPE_OF_HPP 21 #include "../interfaces/object_traits.hpp" 32 template<
typename T,
typename =
void>
35 : std::integral_constant<triangle_type, zero<T> or one_dimensional<T> ? triangle_type::diagonal : triangle_type::none> {};
39 template<indexible T> requires
44 struct
triangle_type_of_impl<T,
std::void_t<decltype(interface::object_traits<stdex::remove_cvref_t<T>>::triangle_type_value)>>
46 : std::integral_constant<triangle_type, interface::object_traits<stdex::remove_cvref_t<T>>::triangle_type_value>
49 "triangle_type_value interface member cannot be triangle_type::any");
Enumerations relating to linear algebra.
Lower, upper, or diagonal matrix.
The root namespace for OpenKalman.
Definition: basics.hpp:34
Definition: object_traits.hpp:38
constexpr auto triangle_type_of_v
Helper template for triangle_type_of.
Definition: triangle_type_of.hpp:70
Definition: triangle_type_of.hpp:34
The triangle_type associated with an indexible object.
Definition: triangle_type_of.hpp:63
Definition for one_dimensional.