//#include #include #include #include struct Archive {}; struct Test { template void serialize( Archive & ar ) { std::cout << "hey there" << std::endl; } template void save( Archive & ar ) const { std::cout << "saved by the bell" << std::endl; } template void load( Archive & ar ) { std::cout << "locked and loaded" << std::endl; } template static Test * load_and_allocate( Archive & ar ) { } }; template void serialize( Archive & ar, Test & t ) { } template void load( Archive & ar, Test & t ) { } template void save( Archive & ar, Test const & t ) { } namespace cereal { template <> struct LoadAndAllocate { template static Test * load_and_allocate( Archive & ar ) { } }; } int main() { std::cout << std::boolalpha; //std::cout << cereal::traits::has_member_serialize::value << std::endl; // Test Load and Allocate internal/external std::cout << "\tload_and_allocate" << std::endl; std::cout << cereal::traits::has_member_load_and_allocate::value << std::endl; std::cout << cereal::traits::has_non_member_load_and_allocate::value << std::endl; // serialize std::cout << "\tserialize" << std::endl; std::cout << cereal::traits::has_member_serialize::value << std::endl; std::cout << cereal::traits::has_non_member_serialize::value << std::endl; // load std::cout << "\tload" << std::endl; std::cout << cereal::traits::has_member_load::value << std::endl; std::cout << cereal::traits::has_non_member_load::value << std::endl; // save std::cout << "\tsave" << std::endl; std::cout << cereal::traits::has_member_save::value << std::endl; std::cout << cereal::traits::has_non_member_save::value << std::endl; // member split std::cout << "\tmember split" << std::endl; std::cout << cereal::traits::has_member_split::value << std::endl; // serialiable std::cout << "\toutput serializable" << std::endl; std::cout << cereal::traits::is_output_serializable::value << std::endl; return 0; }