16 #ifndef OPENKALMAN_IS_SQUARE_SHAPED_HPP 17 #define OPENKALMAN_IS_SQUARE_SHAPED_HPP 19 #include "patterns/patterns.hpp" 35 template<auto N = values::unbounded_size, indexible T> requires
36 (
values::integral<decltype(N)> or stdex::same_as<std::decay_t<decltype(N)>, values::unbounded_size_t>) and
37 (not values::integral<decltype(N)> or N >= 2)
50 return patterns::get_common_pattern_collection_dimension<std::max(2_uz, index_count_v<T>)>(
53 return patterns::get_common_pattern_collection_dimension<N>(
constexpr auto is_square_shaped(const T &t)
At least 2 and at most N indices have the same extent.
Definition: is_square_shaped.hpp:43
decltype(auto) constexpr get_pattern_collection(T &&t)
Get the patterns::pattern_collection associated with indexible object T.
Definition: get_pattern_collection.hpp:36
The root namespace for OpenKalman.
Definition: basics.hpp:34
A type reflecting an unbound size.
Definition: size.hpp:27
constexpr bool integral
T is an integral value.
Definition: integral.hpp:47
Definition of get_pattern_collection function.
constexpr unbounded_size_t unbounded_size
An instance of unbounded_size_t;.
Definition: size.hpp:60