17 #ifndef OPENKALMAN_LARGEST_VECTOR_SPACE_DESCRIPTOR_HPP 18 #define OPENKALMAN_LARGEST_VECTOR_SPACE_DESCRIPTOR_HPP 34 constexpr coordinates::pattern decltype(
auto)
36 template<
typename Scalar,
typename V,
typename...Vs, std::enable_if_t<
37 values::number<Scalar> and (pattern<V> and ... and pattern<Vs>),
int> = 0>
38 constexpr decltype(
auto)
40 largest_vector_space_descriptor(V&& v, Vs&&...vs)
42 if constexpr (
sizeof...(Vs) == 0)
44 return std::forward<V>(v);
48 decltype(
auto) tail = largest_vector_space_descriptor<Scalar>(
std::forward<Vs>(vs)...);
50 if constexpr ((fixed_pattern<V> and fixed_pattern<decltype(tail)>))
52 if constexpr (dimension_of_v<V> >= dimension_of_v<decltype(tail)>)
53 return
std::forward<V>(v);
55 return
std::forward<decltype(tail)>(tail);
57 else if constexpr (euclidean_pattern<V> and euclidean_pattern<decltype(tail)>)
64 return coordinates::DynamicDescriptor<Scalar> {std::forward<V>(v)};
66 return coordinates::DynamicDescriptor<Scalar> {std::forward<decltype(tail)>(tail)};
73 #endif //OPENKALMAN_LARGEST_VECTOR_SPACE_DESCRIPTOR_HPP Definition: get_component_start_indices.hpp:29
constexpr bool pattern
An object describing the set of coordinates associated with a tensor index.
Definition: pattern.hpp:31
constexpr bool number
T is a numerical type.
Definition: number.hpp:33
Definition: tuple_reverse.hpp:103
Definition for coordinates::pattern.
constexpr auto get_dimension(const Arg &arg)
Get the vector dimension of coordinates::pattern Arg.
Definition: get_dimension.hpp:55