Files
cereal/sandbox_vs2012.cpp
T

91 lines
2.3 KiB
C++

//#include <cereal/access.hpp>
#include <cereal/details/traits.hpp>
#include <iostream>
#include <type_traits>
struct Archive {};
struct Test
{
template <class Archive>
void serialize( Archive & ar )
{
std::cout << "hey there" << std::endl;
}
template <class Archive>
void save( Archive & ar ) const
{
std::cout << "saved by the bell" << std::endl;
}
template <class Archive>
void load( Archive & ar )
{
std::cout << "locked and loaded" << std::endl;
}
template <class Archive>
static Test * load_and_allocate( Archive & ar )
{ }
};
template <class Archive>
void serialize( Archive & ar, Test & t )
{ }
template <class Archive>
void load( Archive & ar, Test & t )
{ }
template <class Archive>
void save( Archive & ar, Test const & t )
{ }
namespace cereal
{
template <>
struct LoadAndAllocate<Test>
{
template <class Archive>
static Test * load_and_allocate( Archive & ar )
{ }
};
}
int main()
{
std::cout << std::boolalpha;
//std::cout << cereal::traits::has_member_serialize<Test, Archive>::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<Test, Archive>::value << std::endl;
std::cout << cereal::traits::has_non_member_load_and_allocate<Test, Archive>::value << std::endl;
// serialize
std::cout << "\tserialize" << std::endl;
std::cout << cereal::traits::has_member_serialize<Test, Archive>::value << std::endl;
std::cout << cereal::traits::has_non_member_serialize<Test, Archive>::value << std::endl;
// load
std::cout << "\tload" << std::endl;
std::cout << cereal::traits::has_member_load<Test, Archive>::value << std::endl;
std::cout << cereal::traits::has_non_member_load<Test, Archive>::value << std::endl;
// save
std::cout << "\tsave" << std::endl;
std::cout << cereal::traits::has_member_save<Test, Archive>::value << std::endl;
std::cout << cereal::traits::has_non_member_save<Test, Archive>::value << std::endl;
// member split
std::cout << "\tmember split" << std::endl;
std::cout << cereal::traits::has_member_split<Test, Archive, Archive>::value << std::endl;
// serialiable
std::cout << "\toutput serializable" << std::endl;
std::cout << cereal::traits::is_output_serializable<Test, Archive>::value << std::endl;
return 0;
}