1 #pragma once 2 3 #include <memory> 4 #include <cereal/cereal.hpp> 5 #include <cereal/archives/xml.hpp> 6 #include <cereal/types/polymorphic.hpp> 7 8 #if defined (_WINDLL) 9 #define DECLSPECIFIER __declspec(dllexport) 10 #elif defined(MSC_VER) 11 #define DECLSPECIFIER __declspec(dllimport) 12 #else 13 #define DECLSPECIFIER 14 #endif 15 16 int doit(); 17 18 class VersionTest 19 { 20 public: 21 int x; 22 template <class Archive> serialize(Archive & ar,const std::uint32_t)23 void serialize( Archive & ar, const std::uint32_t /* version */ ) 24 { ar( x ); } 25 }; 26 27 class Base 28 { 29 public: 30 friend class cereal::access; 31 32 template < class Archive > serialize(Archive &,std::uint32_t const)33 void serialize(Archive &, std::uint32_t const) {} ~Base()34 virtual ~Base() {} 35 }; 36 37 extern template DECLSPECIFIER void Base::serialize<cereal::XMLInputArchive> 38 ( cereal::XMLInputArchive & ar, std::uint32_t const version ); 39 40 extern template DECLSPECIFIER void Base::serialize<cereal::XMLOutputArchive> 41 ( cereal::XMLOutputArchive & ar, std::uint32_t const version ); 42 43 CEREAL_CLASS_VERSION(VersionTest, 1) 44