id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 5567,boost serialization 1_46_1 incompatible with prior versions due to backwards comparison,Phil Hartmann ,Robert Ramey,"Archive's writing class_id_type between 1_41 and being read back in 1_46 will fail. basic_binary_iarchive.hpp line 104 in 1_46 is ""if(boost::archive::library_version_type(6) < lvt){"" Or 6 < lvt which is lvt >= 7, and because the if before it is 7 < lvt, its essentially lvt == 7. So if the version is 7 serialize in a 16 bit integer, else versions 1 through 6 serialize in a 32 bit integer. The problem here is this is backwards. Version 1-6 are 16 bit, 7 might have been 32bit (because of issues in 1_42/1_43). The code needs to be swapped (assuming consistency throughout the file is to remain). tracking_type also appears to have the same issue (although it seems to be ok) version_type I don't get at all, going back through the basic_binary_iarchive.hpp's I don't see how the code is right at all. Anything less than version 7 should be serializing a 8 bit int from what I can tell. Prior versions can be viewed at: http://www.boost.org/doc/libs/1_44_0/libs/serialization/src/basic_archive.cpp http://www.boost.org/doc/libs/1_41_0/libs/serialization/src/basic_archive.cpp http://www.boost.org/doc/libs/1_40_0/libs/serialization/src/basic_archive.cpp ... Library versions can be viewed at: http://www.boost.org/doc/libs/1_44_0/boost/archive/basic_binary_iarchive.hpp http://www.boost.org/doc/libs/1_41_0/boost/archive/basic_binary_iarchive.hpp http://www.boost.org/doc/libs/1_40_0/boost/archive/basic_binary_iarchive.hpp ... Side Note: IMHO writing code such as 6 < lvt is extremely unintuitive and backwards of how most people think.",Bugs,new,Boost 1.47.0,serialization,Boost 1.46.1,Showstopper,,serialization compatability,