diff --git a/include/eigenpy/fwd.hpp b/include/eigenpy/fwd.hpp
index 557fda42e23058f53d8606d1cbd1e480a00fd13f..bb8a1913c57f105d35f6aa21cbf3a76d1bb8f1cf 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"