I can't speak to what support is present in boost serialization, but I have a lot of code that needs to deal with multiple versions of classes or data structures. I've found that the best way to deal with that is to store a version number as a data member and then handle the schema evolution internally in the class. In general, it is the responsibility of a class to handle older versions "appropriately" whatever that means to you in your context. If the version number is the FIRST data member of the class (in an I/O or serialization context), then you can easily write code to handle multiple versions during I/O and/or serialization.
Just my $0.02.
Aurbach & Associates, Inc.
Date: July 15, 2011 7:27:07 AM CDT
Subject: [Boost-users] [Serialization] Writing an old version of a class
I apologize if this is a duplicate posting. I sent this 2 days ago, and it appears in the archives, but I never received it back from the list and there have been no replies, so I am posting it again.
Using boost serialization, I would like to be able to write an old version of a class, so that I can save data in an "old" format to allow other users with an old version of my program to read the file.
I see from the archives that this has come up before, and Robert Ramey indicated it was doable and on the todo list, but I don't see it in the release notes or documentation. Did anything every come of this?
Or, has anyone else done this? Any suggestions on how to accomplish this?