16 #ifndef OPENKALMAN_MAKE_DIAGONAL_ADAPTER_HPP 17 #define OPENKALMAN_MAKE_DIAGONAL_ADAPTER_HPP 28 template<indexible Arg, coordinates::pattern D0, coordinates::pattern D1> requires
33 template<
typename Arg,
typename D0,
typename D1, std::enable_if_t<
34 indexible<Arg> and coordinates::pattern<D0> and coordinates::pattern<D1> and
36 (
dynamic_dimension<Arg, 0> or
compares_with<vector_space_descriptor_of<Arg, 0>, D0, equal_to<>,
applicability::permitted> or
compares_with<vector_space_descriptor_of<Arg, 0>, D1, equal_to<>,
applicability::permitted>),
int> = 0>
41 return diagonal_adapter {std::forward<Arg>(arg), std::forward<D0>(d0), std::forward<D1>(d1)};
51 template<indexible Arg>
54 template<
typename Arg, std::enable_if_t<indexible<Arg>,
int> = 0>
59 auto d = get_pattern_collection<0>(arg);
constexpr bool diagonal_matrix
Specifies that a type is a diagonal matrix or tensor.
Definition: diagonal_matrix.hpp:32
applicability
The applicability of a concept, trait, or restraint.
Definition: constants.hpp:35
The root namespace for OpenKalman.
Definition: basics.hpp:34
An adapter for creating a diagonal matrix or tensor.
Definition: diagonal_adapter.hpp:27
constexpr bool dynamic_dimension
Specifies that T's index N has a dimension defined at run time.
Definition: dynamic_dimension.hpp:44
constexpr auto make_diagonal_adapter(Arg &&arg, D0 &&d0, D1 &&d1)
Make a diagonal_matrix, specifying the first two dimensions, which may not necessarily be the same...
Definition: make_diagonal_adapter.hpp:39
constexpr bool compares_with
Compares two coordinates::pattern objects.
Definition: compares_with.hpp:475