16 #ifndef OPENKALMAN_INTERFACES_MDSPAN_OBJECT_TRAITS_HPP 17 #define OPENKALMAN_INTERFACES_MDSPAN_OBJECT_TRAITS_HPP 31 template<
typename T,
typename Extents,
typename LayoutPolicy,
typename AccessorPolicy>
32 struct object_traits<stdex::mdspan<T, Extents, LayoutPolicy, AccessorPolicy>>
37 struct is_diagonal_layout : std::false_type {};
39 template<
typename N,
typename E>
43 struct is_constant_accessor : std::false_type {};
49 struct is_constant_diagonal_accessor : std::false_type {};
60 static constexpr decltype(
auto)
63 return std::forward<M>(m);
75 template<
typename M> requires
79 template<
typename M, std::enable_if_t<
87 return m.data_handle();
89 return std::get<0>(m.data_handle());
static constexpr auto get_constant(const M &m)
If AccessorPolicy indicates that the mdspan is constant, return the constant value.
Definition: mdspan-object.hpp:84
Definition: basics.hpp:41
triangle_type
The type of a triangular matrix.
Definition: enumerations.hpp:26
Definition: to_diagonal_mdspan_policies.hpp:29
constexpr bool value
T is a fixed or dynamic value that is reducible to a number.
Definition: value.hpp:45
A diagonal matrix (both a lower-left and an upper-right triangular matrix).
Enumerations relating to linear algebra.
static const bool is_specialized
Identifies types for which object_traits is specialized.
Definition: object_traits.hpp:44
Definition: constant_mdspan_policies.hpp:96
Forward declaration of object_traits, which must be defined for all objects used in OpenKalman...
Definition: object_traits.hpp:38
Definition: to_diagonal_mdspan_policies.hpp:177
Basic definitions for OpenKalman as a whole.
decltype(auto) constexpr get_mdspan(T &&t)
Get the mdspan associated with indexible object T.
Definition: get_mdspan.hpp:35