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中没有任何相关内容的更改)。
开箱即用,不行。您需要自己编写序列化程序。幸运的是,有人已经做了:
使用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);
}