Hello,
I want to add serialization support to the Eigen2 matrix class. It
works well (at least at compile time) until I try to serialize a
shared_ptr.
boost::shared_ptr<MatrixXd> shape;
template <typename Archive>
void serialize(Archive& ar, const unsigned int version) {
ar & BOOST_SERIALIZATION_NVP(shape);
};
I receive a long error message that begins with the first error:
/usr/local/include/boost/type_traits/has_new_operator.hpp: In
instantiation of
'boost::detail::has_new_operator_impl >':
/usr/local/include/boost/type_traits/has_new_operator.hpp:109:
instantiated from 'boost::has_new_operator >'
/usr/local/include/boost/mpl/if.hpp:67: instantiated from
'boost::mpl::if_ >,
boost
::mpl
::identity
>::has_new_operator>,
boost
::mpl
::identity
>::doesnt_have_new_operator> >'
/usr/local/include/boost/mpl/eval_if.hpp:37: instantiated from
'boost::mpl::eval_if >,
boost
::mpl
::identity
>::has_new_operator>,
boost
::mpl
::identity
>::doesnt_have_new_operator> >'
/usr/local/include/boost/archive/detail/iserializer.hpp:235:
instantiated from 'static T*
boost::archive::detail::heap_allocator<T>::invoke() [with T =
Eigen::Matrix]'
/usr/local/include/boost/archive/detail/iserializer.hpp:278:
instantiated from 'void
boost::archive::detail::pointer_iserializer::load_object_ptr(boost::archive::detail::basic_iarchive&, void*&,
unsigned int) const [with Archive = boost::archive::xml_iarchive, T =
Eigen::Matrix]'
BodySchema.cpp:110: instantiated from here
/usr/local/include/boost/type_traits/has_new_operator.hpp:85: error:
call of overloaded 'check_sig(int)' is ambiguous
Has anybody a hint for me what is missing in the matrix class?
second, could anybody please explain to me what
BOOST_SERIALIZATION_SHARED_PTR does and when I have to use it (only
saw it in the demo file).
Thank you,
Best regards
Stefan