2016-10-01 12 views
2

シリアルまたは一般的にstd :: chrono :: minutesをシリアル化するにはどうすればよいですか?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"; 
} 

を試みたが、Visual Studioで2015

理想的
1> Types must either have a serialize function, load/save pair, or load_minimal/save_minimal pair (you may not mix these). 
1> Serialize functions generally have the following signature: 
1> 
1> template<class Archive> 
1>  void serialize(Archive & ar) 
1>  { 
1>  ar(member1, member2, member3); 
1>  } 
1> 
1> 
1> cereal.hpp(702): note: see reference to function template instantiation 'ArchiveType &cereal::InputArchive<ArchiveType,0>::processImpl<std::chrono::minutes,0>(const T &)' being compiled 
1>   with 
1>   [ 
1>    ArchiveType=cereal::JSONInputArchive, 
1>    T=std::chrono::minutes 
1>   ] 

をエラーを取得する私は、ポータブルな方法でシリアライズとデシリアライズするワン。

は、私はあなたがcereal/types/chrono.hppを含むことによって見つけることができ、本当にstd::chrono::durationである、std::chrono::minuteのために、サポートを発見したよう穀物/種類/ 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); 
    } 
}; 

答えて

1

に変更することで問題を解決したと思いますこれはシリアルに含まれています。

関連する問題