【问题标题】:Does boost support serialization of c++11's std::tuple?boost 是否支持 c++11 的 std::tuple 的序列化?
【发布时间】:2013-01-22 13:12:33
【问题描述】:

boost 是否支持 c++11 的 std::tuple 序列化?

我在 /boost/serialization/ 中找不到 tuple.hpp 头文件

我正在使用 boost 1.52.0(如果需要,很乐意升级,但似乎 changes in version 1.53 与此无关)。

【问题讨论】:

    标签: c++ serialization boost c++11 boost-serialization


    【解决方案1】:

    使用C++17's fold expressions,您可以轻松实现序列化器:

    template <typename Archive, typename... Types>
    void boost::serialization::serialize(Archive &ar, std::tuple<Types...> &t, const unsigned int)
    {
        std::apply([&](auto &...element)
                    { ((ar & element), ...); },
                    t);
    }
    

    基于this answer

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      开箱即用,不。您必须自己编写序列化程序。幸运的是,有人已经这样做了:

      C++0x tuple boost serialization(也在github中)

      【讨论】:

      • 是否有不使用可变参数模板的解决方案?
      • 5年多过去了,有官方解决办法吗?
      猜你喜欢
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2013-10-15
      • 2023-03-08
      相关资源
      最近更新 更多