Hello all, I have a problem while attempting to serialize a simple object using xml (text works fine !). This is my code : // SomeData.h #include <boost/serialization/utility.hpp> #include <boost/serialization/base_object.hpp> class OBJECTS_API InternalData { public: InternalData(); virtual ~InternalData(); virtual int getInternals() const = 0; private: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { } }; class OBJECTS_API RealData : public InternalData { public: RealData(int internals=0); int getInternals() const; private: int _internals; friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(InternalData) & BOOST_SERIALIZATION_NVP(_internals); } }; class OBJECTS_API SomeData { public: SomeData(int internals=0); ~SomeData(); InternalData* getInternals() const; private: InternalData* _data; static InternalData* createData(int internals); friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { //ar.register_type(static_cast<RealData*>(0)); ar & BOOST_SERIALIZATION_NVP(_data); } }; ////////////////// // somewhere else const SomeData data(4); boost::archive::xml_oarchive xoa(archive); //archive is a file stream xoa << data; //////////////////// This fails to compile because : // basic_xml_oarchive.hpp // Anything not an attribute and not a name-value pair is an // error and should be trapped here. template<class T> void save_override(T & t, BOOST_PFTO int) { // If your program fails to compile here, its most likely due to // not specifying an nvp wrapper around the variable to // be serialized. BOOST_STATIC_ASSERT(0 == sizeof(T)); } I can't see why my code isn't correct according to that constraint. Any help ? Thanks in advance.