C++11 如何序列化std::chrono::minutes
如何将std::chrono::minutes与谷类食品或一般食品连载 我试过这个C++11 如何序列化std::chrono::minutes,c++11,chrono,cereal,C++11,Chrono,Cereal,如何将std::chrono::minutes与谷类食品或一般食品连载 我试过这个 struct A { std::chrono::minutes m; template <class Archive> void serialize(Archive& ar) { ar(m); } }; int main() { A a; std::ostringstream os;
struct A {
std::chrono::minutes m;
template <class Archive>
void serialize(Archive& ar) {
ar(m);
}
};
int main()
{
A a;
std::ostringstream os;
cereal::JSONOutputArchive ar1(os);
ar1(cereal::make_nvp("A", a));
A result;
std::istringstream is(os.str());
cereal::JSONInputArchive ar2(is);
ar2(cereal::make_nvp("A", result));
if (a.m != result.m)
std::cout << "error\n";
}
结构A{
标准时间:分钟m;
模板
无效序列化(存档和存档){
ar(m);
}
};
int main()
{
A A;
std::ostringstream os;
谷物:JSONOUTPUTAR1(os);
ar1(谷物:制造nvp(“A”,A));
结果,;
std::istringstream是(os.str());
谷物:JSONInputArchive ar2(is);
ar2(谷物:制造nvp(“A”,结果));
如果(a.m!=结果.m)
cout类型必须具有序列化函数、load/save对或load\u minimal/save\u minimal对(不能混合使用)。
1> 序列化函数通常具有以下签名:
1>
1> 模板
1> 作废序列化(存档和ar)
1> {
1> ar(成员1、成员2、成员3);
1> }
1>
1>
1> hpp(702):注意:请参阅正在编译的函数模板实例化“ArchiveType&grane::InputArchive::processImpl(const T&)”的参考
1> 与
1> [
1> ArchiveType=谷物::JSONInputArchive,
1> T=std::chrono::分钟
1> ]
理想情况下,我希望以可移植的方式进行序列化和反序列化
我想我通过加入谷物/types/chrono.hpp解决了这个问题
换成
#include <cereal/types/chrono.hpp>
class A {
std::chrono::minutes m;
friend class cereal::access;
template <class Archive>
void serialize(Archive& ar)
{
ar(m);
}
};
#包括
甲级{
标准时间:分钟m;
好友类:访问;
模板
作废序列化(存档和ar)
{
ar(m);
}
};
正如您所发现的,对std::chrono::minute
的支持实际上是一种std::chrono::duration
,可以通过包含谷物中的graine/types/chrono.hpp
来找到
#include <cereal/types/chrono.hpp>
class A {
std::chrono::minutes m;
friend class cereal::access;
template <class Archive>
void serialize(Archive& ar)
{
ar(m);
}
};