diff --git a/include/eigenpy/eigen-from-python.hpp b/include/eigenpy/eigen-from-python.hpp index 1b8d1dabcde13abb3b81d990f703c57590e2cee3..cf12a9f0d811acc34140b9eacf872b12759c74bc 100644 --- a/include/eigenpy/eigen-from-python.hpp +++ b/include/eigenpy/eigen-from-python.hpp @@ -41,10 +41,16 @@ namespace eigenpy struct referent_storage_eigen_ref { typedef Eigen::Ref<MatType,Options,Stride> RefType; - +#if BOOST_VERSION / 100 % 1000 >= 77 + typedef typename aligned_storage< + ::boost::python::detail::referent_size<RefType&>::value, + ::boost::alignment_of<RefType&>::value + >::type type; +#else typedef ::boost::python::detail::aligned_storage< ::boost::python::detail::referent_size<RefType&>::value > AlignedStorage; +#endif referent_storage_eigen_ref() : pyArray(NULL) @@ -93,14 +99,22 @@ namespace boost { namespace python { namespace detail { struct referent_storage<Eigen::Ref<MatType,Options,Stride> &> { typedef ::eigenpy::details::referent_storage_eigen_ref<MatType,Options,Stride> StorageType; +#if BOOST_VERSION / 100 % 1000 >= 77 + typedef typename aligned_storage<referent_size<StorageType&>::value>::type type; +#else typedef aligned_storage<referent_size<StorageType&>::value> type; +#endif }; template<typename MatType, int Options, typename Stride> struct referent_storage<const Eigen::Ref<const MatType,Options,Stride> &> { typedef ::eigenpy::details::referent_storage_eigen_ref<const MatType,Options,Stride> StorageType; +#if BOOST_VERSION / 100 % 1000 >= 77 + typedef typename aligned_storage<referent_size<StorageType&>::value, alignment_of<StorageType&>::value>::type type; +#else typedef aligned_storage<referent_size<StorageType&>::value> type; +#endif }; #endif }}}