#include #include #include class A { friend class boost::serialization::access; friend class B; private: A() {} ~A() {} template void serialize(Archive& ar, const unsigned int version) { } }; class B { friend class boost::serialization::access; A a; template void serialize(Archive& ar, const unsigned int version) { ar << a; } }; int main() { std::ofstream ofs("hi"); { boost::archive::binary_oarchive oa(ofs); B b; oa << b; } } /* 1>------ Build started: Project: 2k8test, Configuration: Release Win32 ------ 1>Compiling... 1>serialization_fun.cpp 1>C:\dev\boost-trunk\boost/serialization/extended_type_info_typeid.hpp(118) : error C2248: 'A::~A' : cannot access private member declared in class 'A' 1> .\serialization_fun.cpp(16) : compiler has generated 'A::~A' here 1> .\serialization_fun.cpp(6) : see declaration of 'A' 1> C:\dev\boost-trunk\boost/serialization/extended_type_info_typeid.hpp(117) : while compiling class template member function 'void boost::serialization::extended_type_info_typeid::destroy(const void *const ) const' 1> with 1> [ 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(110) : see reference to class template instantiation 'boost::serialization::extended_type_info_typeid' being compiled 1> with 1> [ 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(107) : while compiling class template member function 'boost::archive::detail::oserializer::oserializer(void)' 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(234) : see reference to class template instantiation 'boost::archive::detail::oserializer' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(228) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type::save_standard::invoke(Archive &,const T &)' 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(292) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type::save_standard' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(280) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type::invoke(Archive &,const T &)' 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(498) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/common_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::save(Archive &,const T &)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/array/oarchive.hpp(118) : see reference to function template instantiation 'void boost::archive::detail::common_oarchive::save_override(T &,int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/basic_binary_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::array::oarchive::save_override(const T &,unsigned int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/binary_oarchive_impl.hpp(45) : see reference to function template instantiation 'void boost::archive::basic_binary_oarchive::save_override(const T &,int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/interface_oarchive.hpp(63) : see reference to function template instantiation 'void boost::archive::binary_oarchive_impl::save_override(T &,int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> Elem=char, 1> Tr=std::char_traits, 1> T=A 1> ] 1> .\serialization_fun.cpp(25) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive::operator <<(T &)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=A 1> ] 1> C:\dev\boost-trunk\boost/serialization/access.hpp(109) : see reference to function template instantiation 'void B::serialize(Archive &,const unsigned int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive 1> ] 1> C:\dev\boost-trunk\boost/serialization/serialization.hpp(81) : see reference to function template instantiation 'void boost::serialization::access::serialize(Archive &,T &,const unsigned int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/serialization/serialization.hpp(140) : see reference to function template instantiation 'void boost::serialization::serialize(Archive &,T &,const unsigned int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(147) : see reference to function template instantiation 'void boost::serialization::serialize_adl(Archive &,T &,const unsigned int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(139) : while compiling class template member function 'void boost::archive::detail::oserializer::save_object_data(boost::archive::detail::basic_oarchive &,const void *) const' 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(234) : see reference to class template instantiation 'boost::archive::detail::oserializer' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(228) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type::save_standard::invoke(Archive &,const T &)' 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(292) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type::save_standard' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(280) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type::invoke(Archive &,const T &)' 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(498) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/common_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::save(Archive &,const T &)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/array/oarchive.hpp(118) : see reference to function template instantiation 'void boost::archive::detail::common_oarchive::save_override(T &,int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/basic_binary_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::array::oarchive::save_override(const T &,unsigned int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/binary_oarchive_impl.hpp(45) : see reference to function template instantiation 'void boost::archive::basic_binary_oarchive::save_override(const T &,int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1> C:\dev\boost-trunk\boost/archive/detail/interface_oarchive.hpp(63) : see reference to function template instantiation 'void boost::archive::binary_oarchive_impl::save_override(T &,int)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> Elem=char, 1> Tr=std::char_traits, 1> T=B 1> ] 1> .\serialization_fun.cpp(35) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive::operator <<(T &)' being compiled 1> with 1> [ 1> Archive=boost::archive::binary_oarchive, 1> T=B 1> ] 1>Build log was saved at "file://c:\dev\work\2k8test\Release\BuildLog.htm" 1>2k8test - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== */