加载中…
个人资料
ad_long
ad_long
  • 博客等级:
  • 博客积分:0
  • 博客访问:350,189
  • 关注人气:44
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

cereal序列化模板类

(2020-08-13 17:26:08)
template <class T>
struct A
{
  T x;
  template <class Archive>
  void serialize( Archive & ar, const std::uint32_t version )
  {
    ar( x );
  }
};

namespace cereal { namespace detail {
  template <class T> struct Version<A<T>>
  {
    static const std::uint32_t version;
    static std::uint32_t registerVersion()
    {
      ::cereal::detail::StaticObject<Versions>::getInstance().mapping.emplace(
           std::type_index(typeid(A<T>)).hash_code(), 3 );
      return 3;
    }
    static void unused() { (void)version; }
  };
  template <class T>
  const std::uint32_t Version<A<T>>::version =
    Version<A<T>>::registerVersion();
} } // end namespaces

int main()
{
  {
    cereal::JSONOutputArchive ar( std::cout );
    A<int> a = {3};
    A<double> b = {3.14};
    ar( a, b );
  }
}

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有