16 #ifndef OPENKALMAN_IS_VECTOR_HPP 17 #define OPENKALMAN_IS_VECTOR_HPP 25 template<std::
size_t N, std::
size_t i = 0,
typename T>
26 constexpr
bool get_is_vector_impl(
const T& t)
28 if constexpr (i < index_count_v<T>)
34 std::bool_constant<N == i>{},
35 values::operation(std::equal_to{}, get_index_extent<i>(t), std::integral_constant<std::size_t, 1>{})
37 get_is_vector_impl<N, i + 1>(t));
41 return std::true_type {};
54 template<std::
size_t N = 0, indexible T>
55 constexpr internal::boolean_testable
auto 57 template<std::
size_t N = 0,
typename T, std::enable_if_t<indexible<T>,
int> = 0>
62 if constexpr (index_count_v<T> == stdex::dynamic_extent)
70 return detail::get_is_vector_impl<N>(t);
constexpr auto count_indices(const T &)
Get the number of indices necessary to address all the components of an indexible object...
Definition: count_indices.hpp:51
constexpr auto get_index_extent(T &&t, I i=I{})
Get the runtime dimensions of index N of indexible T.
Definition: get_index_extent.hpp:36
The root namespace for OpenKalman.
Definition: basics.hpp:34
constexpr auto is_vector(const T &t)
Return true if T is a vector at runtime.
Definition: is_vector.hpp:60
Definition for index_count.
constexpr auto operation(Operation &&op, Args &&...args)
A potentially constant-evaluated operation involving some number of values.
Definition: operation.hpp:98