16 #ifndef OPENKALMAN_ALL_VECTOR_SPACE_DESCRIPTORS_HPP 17 #define OPENKALMAN_ALL_VECTOR_SPACE_DESCRIPTORS_HPP 32 template<
typename T, std::size_t...I>
33 constexpr
auto all_vector_space_descriptors_impl(
const T& t, std::index_sequence<I...>)
35 return std::tuple {get_vector_space_descriptor<I>(t)...};
45 template<indexible T> requires interface::get_vector_space_descriptor_defined_for<T>
48 template<
typename T, std::enable_if_t<
49 indexible<T> and interface::get_vector_space_descriptor_defined_for<T>,
int> = 0>
50 constexpr decltype(
auto)
57 return detail::all_vector_space_descriptors_impl(t, std::make_index_sequence<index_count_v<T>>{});
63 template<
typename T, std::size_t...I>
64 constexpr
auto all_vector_space_descriptors_impl(std::index_sequence<I...>)
66 return std::tuple {std::decay_t<decltype(get_vector_space_descriptor<I>(std::declval<T>()))>{}...};
78 template<indexible T> requires (index_count_v<T> !=
dynamic_size) and (not has_dynamic_dimensions<T>)
79 constexpr pattern_tuple
auto 81 template<
typename T, std::enable_if_t<indexible<T> and (index_count<T>::value != dynamic_size) and
82 (not has_dynamic_dimensions<T>),
int> = 0>
87 constexpr std::make_index_sequence<index_count_v<T>> seq;
88 return detail::all_vector_space_descriptors_impl<T>(seq);
94 #endif //OPENKALMAN_ALL_VECTOR_SPACE_DESCRIPTORS_HPP Definition for pattern_collection.
Definition for has_dynamic_dimensions.
decltype(auto) constexpr all_vector_space_descriptors(const T &t)
Return a collection of coordinates::pattern objects associated with T.
Definition: all_vector_space_descriptors.hpp:52
Concepts for testing whether indexible_object_traits are defined for a particular object...
The root namespace for OpenKalman.
Definition: basics.hpp:34
Definition of VectorSpaceDescriptorRange.
Definition for index_count.
Definition for indexible.
constexpr std::size_t dynamic_size
A constant indicating that a size or index is dynamic.
Definition: global-definitions.hpp:33
Definition for pattern_tuple.
constexpr bool pattern_collection
An object describing a collection of /ref coordinates::pattern objects.
Definition: pattern_collection.hpp:33
Definition: VectorSpaceDescriptorRange.hpp:26