Hi, is there any way to check whether the class type used in deserialization is identical to the class type in the serialization? Below is a simple example, that serializes class "Data" into a text archive and deserializes this archive into class "StringData". If that happens I would like an exception to be thrown. Is this possible? Thanks for any help, Frank #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> #include <iostream> #include <sstream> using namespace std; class Data { public: Data() { for (int i=0; i<100; i++) a[i]=i; }; int a[100]; template<class Archive> void serialize(Archive & ar, const unsigned int) { ar & a; } }; class StringData { public: StringData() {}; string s; template<class Archive> void serialize(Archive & ar, const unsigned int) { ar & s; } }; int main() { ostringstream oss; // Serialize the class const Data d1; { boost::archive::text_oarchive oa(oss); oa << d1; } // Deserialize it using the wrong type StringData d2; { istringstream iss(oss.str()); boost::archive::text_iarchive ia(iss); ia >> d2; } cout << oss.str() << endl; cout << d2.s << endl; } Output: ======= 22 serialization::archive 4 0 0 100 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36