#include "cereal.hpp" #include // ################################### struct Test1 { int a; std::string b; template void serialize(Archive & ar, unsigned int version) { ar & a & b; } }; CEREAL_CLASS_VERSION(Test1, 1); // ################################### struct Test2 { int a; std::string b; template void save(Archive & ar, unsigned int version) { ar & a & b; } template void load(Archive & ar, unsigned int version) { ar & a & b; } }; CEREAL_CLASS_VERSION(Test2, 2); // ################################### struct Test3 { int a; std::string b; }; template void serialize(Archive & ar, Test3 & t, unsigned int version) { //ar & t.a; //ar & t.b; } CEREAL_CLASS_VERSION(Test3, 3); namespace test4 { // ################################### struct Test4 { int a; std::string b; }; template void save(Archive & ar, Test4 & t, unsigned int version) { ar & t.a & t.b; } template void load(Archive & ar, Test4 & t, unsigned int version) { ar & t.a & t.b; } CEREAL_CLASS_VERSION(Test4, 4); } // ###################################################################### int main() { cereal::BinaryOutputArchive archive; Test1 t1; Test2 t2; Test3 t3; test4::Test4 t4; archive & t1; archive & t2; archive & t3; archive & t4; return 0; }