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

Does boost support serialization of c++11's std::tuple?

本文关键字:tuple 序列化 是否 std c++11 boost 支持      更新时间:2023-10-16

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

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

我使用的是boost 1.52.0(如果需要,很乐意升级,但1.53版本的变化似乎与此无关)。

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

C++0x元组提升序列化(也在github中)

这里有另一个实现:

https://github.com/galaxyeye/atlas/blob/master/atlas/serialization/tuple.h

测试代码:

https://github.com/galaxyeye/atlas/blob/master/libs/serialization/test/tuple.cpp

享受:)

使用C++17的fold表达式,您可以轻松地实现一个序列化程序:

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);
}

基于这个答案。