17 #ifndef OPENKALMAN_ONE_DIMENSIONAL_HPP 18 #define OPENKALMAN_ONE_DIMENSIONAL_HPP 26 template<
typename T,
Applicability b, std::size_t I, std::size_t...Is>
27 constexpr
bool has_1_by_1_dims(std::index_sequence<I, Is...>)
29 return compares_with<vector_space_descriptor_of_t<T, I>, vector_space_descriptor_of_t<T, Is>, equal_to<>,
Applicability::permitted> and
30 (dimension_size_of_index_is<T, I, 1, b> and ... and dimension_size_of_index_is<T, Is, 1, b>);
35 template<
typename T, Applicability b>
37 template<
typename T, Applicability b,
typename =
void>
43 template<
typename T, Applicability b> requires (index_count_v<T> ==
dynamic_size)
46 template<typename T, Applicability b>
49 : std::bool_constant<b == Applicability::permitted and detail::has_1_by_1_dims<T, b>(std::make_index_sequence<2>{})> {};
53 template<
typename T, Applicability b> requires (index_count_v<T> == 0)
56 template<typename T, Applicability b>
63 template<
typename T, Applicability b> requires (index_count_v<T> !=
dynamic_size and index_count_v<T> > 0)
66 template<typename T, Applicability b>
67 struct
one_dimensional_impl<T, b, std::enable_if_t<index_count<T>::value != dynamic_size and index_count<T>::value > 0>>
69 : std::bool_constant<detail::has_1_by_1_dims<T, b>(std::make_index_sequence<index_count_v<T>>{})> {};
77 template<
typename T, Applicability b = Applicability::guaranteed>
83 constexpr
bool one_dimensional = indexible<T> and
90 #endif //OPENKALMAN_ONE_DIMENSIONAL_HPP constexpr bool one_dimensional
Specifies that a type is one-dimensional in every index.
Definition: one_dimensional.hpp:83
Definition: indexible_object_traits.hpp:36
Definition for compares_with.
Definition: tuple_reverse.hpp:103
The root namespace for OpenKalman.
Definition: basics.hpp:34
The concept, trait, or restraint is permitted, but whether it applies is not necessarily known at com...
Definition: one_dimensional.hpp:39
Applicability
The applicability of a concept, trait, or restraint.
Definition: global-definitions.hpp:93
Definition: object-traits-defined.hpp:205
constexpr std::size_t dynamic_size
A constant indicating that a size or index is dynamic.
Definition: global-definitions.hpp:33