#include "cereal.hpp" #include #include #include // ################################### struct Test1 { int a; template void serialize(Archive & ar) { ar & a; } }; // ################################### struct Test2 { int a; template void save(Archive & ar) const { ar & a; } template void load(Archive & ar) { ar & a; } }; // ################################### struct Test3 { int a; }; template void serialize(Archive & ar, Test3 & t) { ar & t.a; } namespace test4 { // ################################### struct Test4 { int a; }; template void save(Archive & ar, Test4 const & t) { ar & t.a; } template void load(Archive & ar, Test4 & t) { ar & t.a; } } // ###################################################################### int main() { std::ostringstream os; cereal::BinaryOutputArchive archive(os); Test1 t1; Test2 t2; Test3 t3; test4::Test4 t4; archive & t1; archive & t2; archive & t3; archive & t4; int x = 5; auto nvp = cereal::make_nvp("hello!", x); archive & CEREAL_NVP(x); std::cout << std::is_base_of::value << std::endl; std::cout << cereal::traits::has_non_member_serialize() << std::endl; std::cout << cereal::traits::is_serializable() << std::endl; archive & nvp; archive & cereal::make_nvp("another", x); return 0; }