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.