Boost是否支持序列化C++11的std::tuple?

14

Boost是否支持对c++11的std::tuple进行序列化?

我在/boost/serialization/目录下找不到tuple.hpp头文件。

我正在使用boost 1.52.0(如果需要,我很乐意升级,但似乎版本1.53中没有任何相关内容的更改)。

3个回答

8

有没有可用的解决方案不使用变长模板? - jwalk
已经过去了5年以上,是否有官方解决方案? - Nisba


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

基于this answer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接