Robert,
Note that results should be the same with all types of archives. This is a fundamental goal of the library. So if you can make an example which > fails with binary archive but passes with another one - that would be of interest.
It is a header ordering issue. I instrumented the insert and tfind functions in basic_serializer_map.cpp such that they spewed some debug e.g. basic_serializer_map.cpp(53) : this: 00575BB0: Registering CDiagramButton -> true basic_serializer_map.cpp(82) : this: 00575BB0: tfind() CDiagramButton -> true basic_serializer_map.cpp(82) : this: 00575BF4: tfind() CDiagramButton -> false i.e. the first case was registering with one map, the second case was failing to find the type in another map. The failing case above had the following #include order #include <boost/archive/xml_iarchive.hpp> #include <boost/archive/xml_oarchive.hpp> #include <boost/serialization/export.hpp> // <-- wrong! move it #include <boost/archive/binary_iarchive.hpp> #include <boost/archive/binary_oarchive.hpp> #include "test_classes.h" I now realise that <boost/serialization/export.hpp> now needs to follow any of the archive headers. The #include order determines which failure will occur - something that might be added to the comments in the code. Is there any way to detect this problem at compile /link time? Thanks. Jerry. ----- Original Message ----- From: Robert Ramey To: boost-users@lists.boost.org Sent: Friday, March 21, 2008 5:15 PM Subject: Re: [Boost-users] serialization & registration questions Note that results should be the same with all types of archives. This is a fundamental goal of the library. So if you can make an example which fails with binary archive but passes with another one - that would be of interest.