16 #ifndef OPENKALMAN_MAKE_ATTACH_PATTERN_HPP 17 #define OPENKALMAN_MAKE_ATTACH_PATTERN_HPP 19 #include "coordinates/coordinates.hpp" 22 #include "linear-algebra/adapters/pattern_adapter.hpp" 31 template<indexible Arg, pattern_collection_for<Arg> P>
33 template<
typename Arg,
typename P, std::enable_if_t<
34 indexible<Arg> and pattern_collection_for<P, Arg>,
int> = 0>
38 if constexpr (coordinates::euclidean_pattern_collection<P>)
39 return std::forward<Arg>(arg);
52 template<
typename Arg,
typename...Ps, std::enable_if_t<
53 indexible<Arg> and (... and coordinates::pattern<Ps>) and
58 return attach_pattern(std::forward<Arg>(arg), std::tuple {std::forward<Ps>(ps)...});
67 template<coordinates::pattern_collection P, indexible Arg> requires
68 pattern_collection_for<P, Arg> and
69 std::default_initializable<P>
71 template<
typename P,
typename Arg, std::enable_if_t<
73 pattern_collection_for<P, Arg>,
int> = 0>
constexpr auto attach_pattern(Arg &&arg, P &&p)
Attach a pattern_collection to an indexible object.
Definition: attach_pattern.hpp:36
constexpr bool pattern
An object describing the set of coordinates associated with a tensor index.
Definition: pattern.hpp:31
constexpr bool indexible
T is a multidimensional array type.
Definition: indexible.hpp:32
The root namespace for OpenKalman.
Definition: basics.hpp:34
An adapter that attaches a pattern_collection to an indexible object.
Definition: pattern_adapter.hpp:35
Definition for pattern_collection_for.
Definition for indexible.
constexpr bool pattern_collection_for
pattern collection P is compatible with indexible T.
Definition: pattern_collection_for.hpp:66