16 #ifndef OPENKALMAN_EIGEN_TENSOR_FORWARD_DECLARATIONS_HPP 17 #define OPENKALMAN_EIGEN_TENSOR_FORWARD_DECLARATIONS_HPP 19 #include <type_traits> 29 template<
typename Derived,
typename NestedMatrix>
37 template<
typename T,
bool must_be_native = false>
41 constexpr
bool eigen_tensor_general =
43 std::is_base_of_v<Eigen::TensorBase<std::decay_t<T>, Eigen::ReadOnlyAccessors>, std::decay_t<T>> and
44 (not must_be_native or not std::is_base_of_v<
EigenCustomBase, std::decay_t<T>>);
52 template<
typename N,
typename L>
63 concept eigen_tensor_wrapper =
65 constexpr
bool eigen_tensor_wrapper =
75 template<
typename...Ds>
76 struct eigen_sizes<
std::tuple<Ds...>> {
using type = Eigen::Sizes<static_cast<std::ptrdiff_t>(coordinates::dimension_of_v<Ds>)...>; };
88 template<indexible NestedObject>
90 template<
typename NestedObject>
93 has_dynamic_dimensions<NestedObject>,
96 static_cast<int>(index_count_v<NestedObject>),
97 layout_of_v<NestedObject> ==
Layout::right ? Eigen::RowMajor : Eigen::ColMajor,
99 Eigen::TensorFixedSize<
100 scalar_type_of_t<NestedObject>,
102 layout_of_v<NestedObject> ==
Layout::right ? Eigen::RowMajor : Eigen::ColMajor,
103 Eigen::DenseIndex>>>;
109 #ifdef __cpp_concepts 113 template<
typename T,
typename =
void>
121 #endif //OPENKALMAN_EIGEN_TENSOR_FORWARD_DECLARATIONS_HPP constexpr bool eigen_tensor_general
Specifies any descendant of Eigen::TensorBase.
Definition: eigen-tensor-forward-declarations.hpp:41
Row-major storage (C or C++ style): contiguous storage in which the right-most index has a stride of ...
typename scalar_type_of< T >::type scalar_type_of_t
helper template for scalar_type_of.
Definition: scalar_type_of.hpp:54
Definition: tuple_reverse.hpp:103
Trait object providing get and set routines for Eigen tensors.
Definition: eigen-tensor-forward-declarations.hpp:114
constexpr bool value
T is numerical value or is reducible to a numerical value.
Definition: value.hpp:31
decltype(auto) constexpr all_vector_space_descriptors(const T &t)
Return a collection of coordinates::pattern objects associated with T.
Definition: all_vector_space_descriptors.hpp:52
The root namespace for OpenKalman.
Definition: basics.hpp:34
Definition: eigen-tensor-forward-declarations.hpp:30
Definition: eigen-forward-declarations.hpp:22
Definition: eigen-tensor-forward-declarations.hpp:73
Definition: eigen-forward-declarations.hpp:79
Definition: forward-class-declarations.hpp:580
Definition: eigen-tensor-forward-declarations.hpp:50