From 9d7ad651c0f35264059cc4baeadaf25a38f69ce3 Mon Sep 17 00:00:00 2001
From: Justin Carpentier <justin.carpentier@inria.fr>
Date: Mon, 30 Jan 2023 18:42:20 +0100
Subject: [PATCH] geometry: fix quaternion holder type

---
 include/eigenpy/quaternion.hpp | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/include/eigenpy/quaternion.hpp b/include/eigenpy/quaternion.hpp
index 5b93ce4..5fc4c51 100644
--- a/include/eigenpy/quaternion.hpp
+++ b/include/eigenpy/quaternion.hpp
@@ -350,15 +350,22 @@ class QuaternionVisitor
 
  public:
   static void expose() {
-    bp::class_<Quaternion>("Quaternion",
-                           "Quaternion representing rotation.\n\n"
-                           "Supported operations "
-                           "('q is a Quaternion, 'v' is a Vector3): "
-                           "'q*q' (rotation composition), "
-                           "'q*=q', "
-                           "'q*v' (rotating 'v' by 'q'), "
-                           "'q==q', 'q!=q', 'q[0..3]'.",
-                           bp::no_init)
+#if BOOST_VERSION / 100 % 1000 < 71
+    typedef EIGENPY_CLASS_HOLDER_TYPE(Quaternion) HolderType;
+#else
+    typedef ::boost::python::detail::not_specified HolderType;
+#endif
+
+    bp::class_<Quaternion, HolderType>(
+        "Quaternion",
+        "Quaternion representing rotation.\n\n"
+        "Supported operations "
+        "('q is a Quaternion, 'v' is a Vector3): "
+        "'q*q' (rotation composition), "
+        "'q*=q', "
+        "'q*v' (rotating 'v' by 'q'), "
+        "'q==q', 'q!=q', 'q[0..3]'.",
+        bp::no_init)
         .def(QuaternionVisitor<Quaternion>());
 
     // Cast to Eigen::QuaternionBase and vice-versa
-- 
GitLab