16 #ifndef OPENKALMAN_VECTOR_HPP 17 #define OPENKALMAN_VECTOR_HPP 24 template<
typename T, std::size_t N,
Applicability b, std::size_t...Is>
25 constexpr
bool do_vector_impl(std::index_sequence<Is...>)
27 return (... and (N == Is or (b ==
Applicability::permitted and dynamic_dimension<T, Is>) or dimension_size_of_index_is<T, Is, 1>));
33 template<
typename T, std::
size_t N, Applicability b>
35 template<
typename T, std::
size_t N, Applicability b,
typename =
void>
38 b == Applicability::permitted and detail::do_vector_impl<T, N, b>(std::make_index_sequence<N + 1> {})> {};
42 template<
typename T, std::
size_t N, Applicability b> requires (index_count_v<T> !=
dynamic_size)
46 struct
vector_impl<T, N, b, std::enable_if_t<index_count<T>::value != dynamic_size>>
48 : std::bool_constant<detail::do_vector_impl<T, N, b>(std::make_index_sequence<index_count_v<T>> {})> {};
63 template<
typename T, std::
size_t N = 0, Applicability b = Applicability::guaranteed>
67 constexpr
bool vector =
74 #endif //OPENKALMAN_VECTOR_HPP 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...
Applicability
The applicability of a concept, trait, or restraint.
Definition: global-definitions.hpp:93
Definition: vector.hpp:37
constexpr std::size_t dynamic_size
A constant indicating that a size or index is dynamic.
Definition: global-definitions.hpp:33
constexpr bool vector
T is a vector (e.g., column or row vector).
Definition: vector.hpp:67