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