17 #ifndef OPENKALMAN_LESS_FIXED_THAN_HPP 18 #define OPENKALMAN_LESS_FIXED_THAN_HPP 25 template<
typename T, std::size_t N, std::size_t...offset>
28 return ((... or (dynamic_dimension<T, N + offset>)));
32 template<
typename T, std::
size_t N>
33 constexpr
bool an_extended_dim_is_dynamic()
35 if constexpr (index_count_v<T> != stdex::dynamic_extent and index_count_v<T> > N)
36 return an_extended_dim_is_dynamic_impl<T, N>(std::make_index_sequence<index_count_v<T> - N>{});
42 #if not defined(__cpp_concepts) or __cpp_generic_lambdas < 201707L 43 template<
typename T,
typename Descriptors, std::size_t...Ix>
46 return ((dynamic_dimension<T, Ix> and
fixed_pattern<collections::collection_element_t<Ix, Descriptors>>) or ... or
47 an_extended_dim_is_dynamic<T,
sizeof...(Ix)>());
56 template<
typename T,
typename Descriptors>
57 #if defined(__cpp_concepts) and __cpp_generic_lambdas >= 201707L 59 indexible<T> and pattern_collection<Descriptors> and
60 (not pattern_collection<Descriptors> or
62 {
return ((dynamic_dimension<T, Ix> and
fixed_pattern<collections::collection_element_t<Ix, Descriptors>>) or ... or
63 detail::an_extended_dim_is_dynamic<T,
sizeof...(Ix)>()); }
64 (std::make_index_sequence<collections::size_of_v<Descriptors>>{}));
66 constexpr
bool less_fixed_than =
67 indexible<T> and pattern_collection<Descriptors> and
68 (not pattern_collection<Descriptors> or
69 detail::less_fixed_than_impl<T, Descriptors>(std::make_index_sequence<collections::size_of_v<Descriptors>>{}));
constexpr bool fixed_pattern
A coordinates::pattern for which the dimension is fixed at compile time.
Definition: fixed_pattern.hpp:46
Definition: trait_backports.hpp:64
constexpr bool less_fixed_than
indexible T's vector space descriptors are less fixed than the at least one of the specified vectors_...
Definition: less_fixed_than.hpp:66
Definition: basics.hpp:48