What compiler are you using? Do the serialization tests that touch polymorphic archives compile? Is test coverage sufficient? Robert Ramey Sergey Skorniakov wrote:
Its look like that lookup_basic_helper/insert_basic_helper has not been added to polymorphic_iarchive/polymorphic_oarchive and polymorphic_iarchive_impl/polymorphic_oarchive_impl classes by mistake. Also, interface_iarchive and interface_oarchive members lookup_helper and
insert_helper should be transformed from
void lookup_helper( const boost::serialization::extended_type_info * const eti, shared_ptr<void> & sph ){ this->This()->basic_iarchive::lookup_basic_helper(eti, sph); }
to
void lookup_helper( const boost::serialization::extended_type_info * const eti, shared_ptr<void> & sph ){ this->This()->lookup_basic_helper(eti, sph); }
This works for me.
c:\boost_1_33_0\boost\archive\detail\interface_iarchive.hpp(73) : error C2039: 'basic_iarchive' : is not a member of 'boost::archive::polymorphic_iarchive' c:\boost_1_33_0\boost\archive\polymorphic_iarchive.hpp(52) : see declaration of 'boost::archive::polymorphic_iarchive' c:\boost_1_33_0\boost\archive\detail\interface_iarchive.hpp(72) : while compiling class-template member function 'void boost::archive::detail::interface_iarchive<Archive>::lookup_helper(const boost::serialization::extended_type_info *const ,boost::shared_ptr<T> &)' with [ Archive=boost::archive::polymorphic_iarchive, T=void ] c:\boost_1_33_0\boost\archive\polymorphic_iarchive.hpp(54) : see reference to class template instantiation 'boost::archive::detail::interface_iarchive<Archive>' being compiled with [ Archive=boost::archive::polymorphic_iarchive ] c:\boost_1_33_0\boost\archive\detail\interface_iarchive.hpp(73) : error C2662: 'boost::archive::detail::basic_iarchive::lookup_basic_helper' : cannot convert 'this' pointer from 'boost::archive::polymorphic_iarchive' to 'boost::archive::detail::basic_iarchive &' Reason: cannot convert from 'boost::archive::polymorphic_iarchive' to 'boost::archive::detail::basic_iarchive' Conversion requires a second user-defined-conversion operator or constructor