C++11 如何序列化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;

如何将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;
        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);
    }
};