
I'm trying to serialize a std::shared_ptr using a polymorphic archive interface, but it complains about no "get_helper". Specifically clang states: "<removed_for_posting>/boost_1_56_0/boost/serialization/shared_ptr.hpp:253:21: No member named 'get_helper' in 'boost::archive::polymorphic_iarchive'" I tried including "boost/serialization/shared_ptr_helper.hpp", but this didn't seem to have what I needed. I did see the new stuff in "boost/serialization/shared_ptr.hpp" regarding std::shared_ptr<>, so I'm hopeful. Most of what I'm doing requires the serialization code to be inside of dll's or dylibs, so I believe I'm going down the correct path in using polymorphic archives... void save(std::shared_ptr<developer> p) { std::ofstream of("archiv.txt"); boost::archive::polymorphic_text_oarchive oa(of); boost::archive::polymorphic_oarchive & oa_interface = oa; oa_interface << p; } void load() { std::ifstream i("archiv.txt"); boost::archive::polymorphic_text_iarchive ia(i); boost::archive::polymorphic_iarchive & ia_interface = ia; std::shared_ptr<developer> p; ia_interface >> p; std::cout << p->getName() << std::endl; std::cout << p->age() << std::endl; std::cout << p->language() << std::endl; std::cout << p->getLangVer() << std::endl; } The compiler error specifically points to this function in shared_ptr.hpp template<class Archive, class T> inline void load( Archive & ar, std::shared_ptr< T > &t, const unsigned int /*file_version*/ ){ // The most common cause of trapping here would be serializing // something like shared_ptr<int>. This occurs because int // is never tracked by default. Wrap int in a trackable type BOOST_STATIC_ASSERT((tracking_level< T >::value != track_never)); T* r; ar >> boost::serialization::make_nvp("px", r); boost::serialization::shared_ptr_helper<std::shared_ptr> & h = ar.template get_helper< shared_ptr_helper<std::shared_ptr> >(); h.reset(t,r); } Any suggestions?