16 #ifndef OPENKALMAN_MAKE_IDENTITY_MATRIX_HPP 17 #define OPENKALMAN_MAKE_IDENTITY_MATRIX_HPP 19 #include "patterns/patterns.hpp" 31 template<values::value C, patterns::pattern_collection P>
34 template<
typename C,
typename P, std::enable_if_t<values::value<C> and patterns::pattern_collection<P>,
int> = 0>
52 template<
typename C,
typename...Ps, std::enable_if_t<values::value<C> and (... and patterns::pattern<Ps>),
int> = 0>
57 return make_identity_matrix<C>(std::tuple{std::forward<Ps>(ps)...});
66 template<values::value C, patterns::pattern_collection P> requires
67 std::default_initializable<P> and
68 values::fixed<collections::size_of<P>>
71 template<
typename C,
typename P, std::enable_if_t<
73 patterns::pattern_collection<P> and
74 values::fixed<collections::size_of<P>>,
int> = 0>
79 return make_identity_matrix<C>(P{});
Definition: fixed_value.hpp:41
constexpr bool pattern
An object describing the characteristics (e.g., dimensions, wrapping structure) of an index...
Definition: pattern.hpp:31
constexpr bool value
T is a fixed or dynamic value that is reducible to a number.
Definition: value.hpp:45
constexpr auto make_constant_diagonal(C c, P &&p)
Make an indexible object in which every diagonal element is a constant value.
Definition: make_constant_diagonal.hpp:40
constexpr auto make_identity_matrix(P &&p)
Make an identity_matrix with a given shape pattern.
Definition: make_identity_matrix.hpp:37
The root namespace for OpenKalman.
Definition: basics.hpp:34
constexpr bool identity_matrix
Specifies that a type is known at compile time to be a rank-2 or lower identity matrix.
Definition: identity_matrix.hpp:50
Definitions for make_constant_diagonal.
Definition for identity_matrix.