
Please send me a copy of any replies to this message. The patch below (against the RC_1_34_0 version from CVS) adds the test program for the "struct load" bug to the serialization library's test suite. This program fails with post-1_31 versions of boost on all the gcc systems I have access to, including gcc 3.2.2, gcc 4.0.2, and gcc 4.0.3. However, the program did work with boost 1_31 on gcc 3.2.2, so from my viewpoint it's a regression in boost. Index: libs/serialization/test/Jamfile =================================================================== RCS file: /cvsroot/boost/boost/libs/serialization/test/Jamfile,v retrieving revision 1.34.2.1 diff -u -p -u -r1.34.2.1 Jamfile --- libs/serialization/test/Jamfile 5 Apr 2006 04:56:10 -0000 1.34.2.1 +++ libs/serialization/test/Jamfile 4 Oct 2006 21:32:00 -0000 @@ -246,6 +246,7 @@ test-suite "serialization" : [ test-bsl-run_files test_shared_ptr ] [ test-bsl-run_files test_shared_ptr_132 ] [ test-bsl-run_polymorphic_archive test_polymorphic : test_polymorphic_A ] + [ compile test_struct_load.cpp ] ; if $(BOOST_SERIALIZATION_TEST) { Index: libs/serialization/test/Jamfile.v2 =================================================================== RCS file: /cvsroot/boost/boost/libs/serialization/test/Jamfile.v2,v retrieving revision 1.3 diff -u -p -u -r1.3 Jamfile.v2 --- libs/serialization/test/Jamfile.v2 17 Mar 2006 07:36:47 -0000 1.3 +++ libs/serialization/test/Jamfile.v2 4 Oct 2006 21:32:00 -0000 @@ -263,6 +263,7 @@ test-suite "serialization" : [ test-bsl-run_files test_shared_ptr ] [ test-bsl-run_files test_shared_ptr_132 ] [ test-bsl-run_polymorphic_archive test_polymorphic : test_polymorphic_A ] + [ compile test_struct_load.cpp ] ; if $(BOOST_SERIALIZATION_TEST) { --- /dev/null 2006-09-22 07:23:40.969060500 -0500 +++ libs/serialization/test/test_struct_load.cpp 2006-10-04 09:17:21.000000000 -0500 @@ -0,0 +1,25 @@ +#include <boost/archive/xml_iarchive.hpp> +#include <boost/serialization/vector.hpp> +#include <boost/serialization/split_member.hpp> +#include <iostream> + +struct K { + friend class boost::serialization::access; + template<class Archive> + void save(Archive &ar, const unsigned int version) const + {} + template<class Archive> + void load(Archive &ar, const unsigned int version) + {} + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +struct load { int x; }; + +int main(void) { + std::vector<K> v; + boost::archive::xml_iarchive ia( std::cin ); + ia & boost::serialization::make_nvp("v", v); + return EXIT_SUCCESS; +} +