Ticket #1708: serialization_repro2.cpp

File serialization_repro2.cpp, 10.9 KB (added by Paul Roberts <paul@…>, 15 years ago)

Repro code sample

Line 
1#include <boost/serialization/access.hpp>
2#include <boost/archive/binary_oarchive.hpp>
3#include <fstream>
4
5class A
6{
7 friend class boost::serialization::access;
8 friend class B;
9private:
10 A() {}
11 ~A() {}
12
13 template<typename Archive> void serialize(Archive& ar, const unsigned int version)
14 {
15 }
16};
17
18class B
19{
20 friend class boost::serialization::access;
21 A a;
22
23 template<typename Archive> void serialize(Archive& ar, const unsigned int version)
24 {
25 ar << a;
26 }
27};
28
29int main()
30{
31 std::ofstream ofs("hi");
32 {
33 boost::archive::binary_oarchive oa(ofs);
34 B b;
35 oa << b;
36 }
37}
38
39/*
401>------ Build started: Project: 2k8test, Configuration: Release Win32 ------
411>Compiling...
421>serialization_fun.cpp
431>C:\dev\boost-trunk\boost/serialization/extended_type_info_typeid.hpp(118) : error C2248: 'A::~A' : cannot access private member declared in class 'A'
441> .\serialization_fun.cpp(16) : compiler has generated 'A::~A' here
451> .\serialization_fun.cpp(6) : see declaration of 'A'
461> 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<T>::destroy(const void *const ) const'
471> with
481> [
491> T=A
501> ]
511> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(110) : see reference to class template instantiation 'boost::serialization::extended_type_info_typeid<T>' being compiled
521> with
531> [
541> T=A
551> ]
561> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(107) : while compiling class template member function 'boost::archive::detail::oserializer<Archive,T>::oserializer(void)'
571> with
581> [
591> Archive=boost::archive::binary_oarchive,
601> T=A
611> ]
621> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(234) : see reference to class template instantiation 'boost::archive::detail::oserializer<Archive,T>' being compiled
631> with
641> [
651> Archive=boost::archive::binary_oarchive,
661> T=A
671> ]
681> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(228) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard::invoke(Archive &,const T &)'
691> with
701> [
711> Archive=boost::archive::binary_oarchive,
721> T=A
731> ]
741> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(292) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard' being compiled
751> with
761> [
771> Archive=boost::archive::binary_oarchive,
781> T=A
791> ]
801> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(280) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::invoke(Archive &,const T &)'
811> with
821> [
831> Archive=boost::archive::binary_oarchive,
841> T=A
851> ]
861> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(498) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>' being compiled
871> with
881> [
891> Archive=boost::archive::binary_oarchive,
901> T=A
911> ]
921> C:\dev\boost-trunk\boost/archive/detail/common_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled
931> with
941> [
951> Archive=boost::archive::binary_oarchive,
961> T=A
971> ]
981> C:\dev\boost-trunk\boost/archive/array/oarchive.hpp(118) : see reference to function template instantiation 'void boost::archive::detail::common_oarchive<Archive>::save_override<const T>(T &,int)' being compiled
991> with
1001> [
1011> Archive=boost::archive::binary_oarchive,
1021> T=A
1031> ]
1041> C:\dev\boost-trunk\boost/archive/basic_binary_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::array::oarchive<Archive>::save_override<T>(const T &,unsigned int)' being compiled
1051> with
1061> [
1071> Archive=boost::archive::binary_oarchive,
1081> T=A
1091> ]
1101> C:\dev\boost-trunk\boost/archive/binary_oarchive_impl.hpp(45) : see reference to function template instantiation 'void boost::archive::basic_binary_oarchive<Archive>::save_override<T>(const T &,int)' being compiled
1111> with
1121> [
1131> Archive=boost::archive::binary_oarchive,
1141> T=A
1151> ]
1161> C:\dev\boost-trunk\boost/archive/detail/interface_oarchive.hpp(63) : see reference to function template instantiation 'void boost::archive::binary_oarchive_impl<Archive,Elem,Tr>::save_override<T>(T &,int)' being compiled
1171> with
1181> [
1191> Archive=boost::archive::binary_oarchive,
1201> Elem=char,
1211> Tr=std::char_traits<char>,
1221> T=A
1231> ]
1241> .\serialization_fun.cpp(25) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<A>(T &)' being compiled
1251> with
1261> [
1271> Archive=boost::archive::binary_oarchive,
1281> T=A
1291> ]
1301> C:\dev\boost-trunk\boost/serialization/access.hpp(109) : see reference to function template instantiation 'void B::serialize<Archive>(Archive &,const unsigned int)' being compiled
1311> with
1321> [
1331> Archive=boost::archive::binary_oarchive
1341> ]
1351> C:\dev\boost-trunk\boost/serialization/serialization.hpp(81) : see reference to function template instantiation 'void boost::serialization::access::serialize<Archive,T>(Archive &,T &,const unsigned int)' being compiled
1361> with
1371> [
1381> Archive=boost::archive::binary_oarchive,
1391> T=B
1401> ]
1411> C:\dev\boost-trunk\boost/serialization/serialization.hpp(140) : see reference to function template instantiation 'void boost::serialization::serialize<Archive,T>(Archive &,T &,const unsigned int)' being compiled
1421> with
1431> [
1441> Archive=boost::archive::binary_oarchive,
1451> T=B
1461> ]
1471> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(147) : see reference to function template instantiation 'void boost::serialization::serialize_adl<Archive,T>(Archive &,T &,const unsigned int)' being compiled
1481> with
1491> [
1501> Archive=boost::archive::binary_oarchive,
1511> T=B
1521> ]
1531> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(139) : while compiling class template member function 'void boost::archive::detail::oserializer<Archive,T>::save_object_data(boost::archive::detail::basic_oarchive &,const void *) const'
1541> with
1551> [
1561> Archive=boost::archive::binary_oarchive,
1571> T=B
1581> ]
1591> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(234) : see reference to class template instantiation 'boost::archive::detail::oserializer<Archive,T>' being compiled
1601> with
1611> [
1621> Archive=boost::archive::binary_oarchive,
1631> T=B
1641> ]
1651> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(228) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard::invoke(Archive &,const T &)'
1661> with
1671> [
1681> Archive=boost::archive::binary_oarchive,
1691> T=B
1701> ]
1711> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(292) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard' being compiled
1721> with
1731> [
1741> Archive=boost::archive::binary_oarchive,
1751> T=B
1761> ]
1771> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(280) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::invoke(Archive &,const T &)'
1781> with
1791> [
1801> Archive=boost::archive::binary_oarchive,
1811> T=B
1821> ]
1831> C:\dev\boost-trunk\boost/archive/detail/oserializer.hpp(498) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>' being compiled
1841> with
1851> [
1861> Archive=boost::archive::binary_oarchive,
1871> T=B
1881> ]
1891> C:\dev\boost-trunk\boost/archive/detail/common_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled
1901> with
1911> [
1921> Archive=boost::archive::binary_oarchive,
1931> T=B
1941> ]
1951> C:\dev\boost-trunk\boost/archive/array/oarchive.hpp(118) : see reference to function template instantiation 'void boost::archive::detail::common_oarchive<Archive>::save_override<const T>(T &,int)' being compiled
1961> with
1971> [
1981> Archive=boost::archive::binary_oarchive,
1991> T=B
2001> ]
2011> C:\dev\boost-trunk\boost/archive/basic_binary_oarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::array::oarchive<Archive>::save_override<T>(const T &,unsigned int)' being compiled
2021> with
2031> [
2041> Archive=boost::archive::binary_oarchive,
2051> T=B
2061> ]
2071> C:\dev\boost-trunk\boost/archive/binary_oarchive_impl.hpp(45) : see reference to function template instantiation 'void boost::archive::basic_binary_oarchive<Archive>::save_override<T>(const T &,int)' being compiled
2081> with
2091> [
2101> Archive=boost::archive::binary_oarchive,
2111> T=B
2121> ]
2131> C:\dev\boost-trunk\boost/archive/detail/interface_oarchive.hpp(63) : see reference to function template instantiation 'void boost::archive::binary_oarchive_impl<Archive,Elem,Tr>::save_override<T>(T &,int)' being compiled
2141> with
2151> [
2161> Archive=boost::archive::binary_oarchive,
2171> Elem=char,
2181> Tr=std::char_traits<char>,
2191> T=B
2201> ]
2211> .\serialization_fun.cpp(35) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<B>(T &)' being compiled
2221> with
2231> [
2241> Archive=boost::archive::binary_oarchive,
2251> T=B
2261> ]
2271>Build log was saved at "file://c:\dev\work\2k8test\Release\BuildLog.htm"
2281>2k8test - 1 error(s), 0 warning(s)
229========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
230*/