From 6aa5fc89e41cbc132d342f2093669f2cc8d2c5c6 Mon Sep 17 00:00:00 2001
From: Justin Carpentier <justin.carpentier@inria.fr>
Date: Sun, 19 Feb 2023 18:41:50 +0100
Subject: [PATCH] core: add get_eigen_base_type

---
 include/eigenpy/fwd.hpp | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/include/eigenpy/fwd.hpp b/include/eigenpy/fwd.hpp
index 557fda4..bb8a191 100644
--- a/include/eigenpy/fwd.hpp
+++ b/include/eigenpy/fwd.hpp
@@ -122,6 +122,24 @@ template <typename MatType,
           typename Scalar =
               typename boost::remove_reference<MatType>::type::Scalar>
 struct EigenFromPy;
+
+template <typename EigenType>
+struct get_eigen_base_type {
+  typedef typename boost::remove_const<EigenType>::type EigenType_;
+  typedef typename boost::mpl::if_<
+      boost::is_base_of<Eigen::MatrixBase<EigenType_>, EigenType_>,
+      Eigen::MatrixBase<EigenType>
+#ifdef EIGENPY_WITH_TENSOR_SUPPORT
+      ,
+      typename boost::mpl::if_<
+          boost::is_base_of<Eigen::TensorBase<EigenType_>, EigenType_>,
+          Eigen::TensorBase<EigenType>, void>::type
+#else
+      ,
+      void
+#endif
+      >::type type;
+};
 }  // namespace eigenpy
 
 #include "eigenpy/alignment.hpp"
-- 
GitLab