boost 是否支持 c++11 的 std::tuple 的序列化?
我在 /boost/serialization/ 找不到 tuple.hpp 头文件
我正在使用 boost 1.52.0(如果需要,很高兴升级,但似乎1.53 版的更改与此无关)。
boost 是否支持 c++11 的 std::tuple 的序列化?
我在 /boost/serialization/ 找不到 tuple.hpp 头文件
我正在使用 boost 1.52.0(如果需要,很高兴升级,但似乎1.53 版的更改与此无关)。
开箱即用,没有。您必须自己编写序列化程序。幸运的是,有人已经这样做了:
这是另一个实现:
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 的折叠表达式,您可以轻松实现序列化程序:
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);
}
基于这个答案。