14

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

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

我正在使用 boost 1.52.0(如果需要,很高兴升级,但似乎1.53 版的更改与此无关)。

4

3 回答 3

8

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

C++0x tuple boost 序列化(也在github中)

于 2013-02-18T01:53:44.140 回答
3

这是另一个实现:

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

使用测试代码:

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

请享用 :)

于 2013-08-09T10:02:32.803 回答
1

使用C++17 的折叠表达式,您可以轻松实现序列化程序:

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

基于这个答案

于 2021-08-09T00:19:14.243 回答