This is my scenario: I've got a shared library in which these classes are defined: class base { ... serialize() ... } class parent: public base { ... serialize(...) {...serialize base. and itselft too!} ... } the shared lib is used by a computational application that re-implements class parent in an extended version - this because the app is a Qt application that does visualization etc...: class grandParent: public parent { //it also defines some specific serialization capabilities: serialize (...) {serialize parent and also itself} } Now if I serialize into an XML archive an instance of grandParent I am clarly able to deserialize it in a grandParent object, but what about to deserialize it as a parent object? if I serialize from grandParent I would get something like: <grandParent> <parent> <base> </base> </parent> </grandParent> I would need to deserialize only the parent part: <parent> <base> </base> </parent> In practice I would like to be able to deserialize an XML archive to a base class instead that to the derived. But in this case the derived class is not accessible by boost (that thus complains about it) In this way I would get the better inter-operability between my application and the underlaying lib, that must be able to run without the app itself... Many thanks! Luca