Jeff Flinn said:
In addition to Dietmar's response, and depending on your definition of
"persistent" there is a "serialization" library near completion at
www.boost.org. This is an excellent library by Robert Ramey which in
pre-release form can be downloaded from
www.rrsd.com. It offers
out-of-the-box support for most(if not all) STL containers, along with
boost::shared_ptr.
My feeling is that "persistent" ought to mean not just "serializable"
but also "transparent". That would require, among other things, that:
- use of a reference/pointer automatically loads the referenced
persistent object;
- some kind of GC process removes unused objects from memory, saving as
necessary;
- the library manages how objects are located within the file.
All of this is perhaps nearer to the idea of an object database than
simple persistent objects. I did a little searching on that subject a
few years ago, but didn't pursue it far. There were a variety of
solutions being offered, both commercial and free, but I don't think
there's anything which offers complete STL compatibility.
In the commercial sphere the big names seem to be Objectivity,
Versant/Poet, ObjectStore... and no doubt many others by now; at the
free end there's TEXAS from the University of Texas
(ftp://ftp.cs.utexas.edu/pub/garbage/texas/, last changed 1996) and
POST++ (
http://www.garret.ru/~knizhnik/post/readme.htm)