
Thanks for the quick reply. That approach was what I also had thought at first, but the length of the list is not necessarily a defined member in all the XML files, and they are often generated by another application without the size member.
In this case its extremely unlikely that they will be loadable by the serialization library at all. The serialization library includes support for std::list. Other list classes aren't included - you'll have to roll your own serialization for anything not included in the library.
This is fine for saving but a problem for loading because the for loop has no way of knowing how many elements to load into the list.
Then there will have to be SOME way to know when to stop loading the list items. perhaps special "end element".
I've tried an implementation which loads objects until exceptions are caught, but this implementation crashes upon receiving a stream_error exception.
Depending on an exception is an extremely bad idea. There is no way to know what kind of exception would occur. and how would you detect a "real" exception from one of these "special" ones.
Is it possible that after the archive reads an object and generates the exception, it doesn't 'rewind' to the position before the offending object? If so, is there a way to make it do this?
It doesn't "rewind". By the time you've caught the exception, the data stream has been read. Basically I think you have to think some more about whatyou really want to do. If you have your own list, that's ok. but you'll have to include information and/or functions on how to know how many elements to read. This is not really a serialization library question. The same issues would arise when reading any collection from a stream. Robert Ramey