17 #ifndef OPENKALMAN_TO_EUCLIDEAN_PATTERN_COLLECTION_HPP 18 #define OPENKALMAN_TO_EUCLIDEAN_PATTERN_COLLECTION_HPP 26 #ifdef __cpp_lib_constexpr_vector 27 template<pattern_collection T>
30 template<
typename T, std::enable_if_t<pattern_collection<T>,
int> = 0>
35 if constexpr (euclidean_pattern_collection<T>)
37 return std::forward<T>(t);
39 else if constexpr (pattern_tuple<T>)
41 return std::apply([](
auto&&...ds){
42 return std::tuple {
get_dimension(std::forward<decltype(ds)>(ds))...};
43 }, std::forward<T>(t));
47 std::vector<std::size_t> ret {};
48 #ifdef __cpp_lib_ranges 49 std::ranges::transform(std::ranges::begin(t), t, [](
auto&& d){
return get_dimension(std::forward<decltype(d)>(d)); });
51 std::transform(ranges::begin(t), ranges::end(t), ranges::begin(ret), [](
auto&& d){
return get_dimension(std::forward<decltype(d)>(d)); });
61 #endif //OPENKALMAN_TO_EUCLIDEAN_PATTERN_COLLECTION_HPP Definition: get_component_start_indices.hpp:29
decltype(auto) to_euclidean_vector_space_descriptor_collection(T &&t)
Convert a pattern_collection to its equivalent-sized coordinates::euclidean_pattern_collection.
Definition: to_euclidean_vector_space_descriptor_collection.hpp:33
constexpr auto get_dimension(const Arg &arg)
Get the vector dimension of coordinates::pattern Arg.
Definition: get_dimension.hpp:55
constexpr bool euclidean_pattern_collection
An object describing a collection of /ref coordinates::pattern objects.
Definition: euclidean_pattern_collection.hpp:40