
Kim Barrett wrote:
While that is an interesting solution to some problems, I don't think it actually helps with my use-cases (multiple).
As mentioned earlier, turning off pointer tracking is not an option for me in some cases. I can envision various ways to deal with that. If one had a means for determining whether serializing a data structure used or would use tracking one could use this approach now, with no [further] changes to the serialization library.
However, none of my existing use-cases are stream oriented. They are instead all transaction / packet oriented. This means there needs to be a clear boundry, where all output to be generated by the archive has been flushed to the buffer collecting the data, any "end of archive" data needs to be written, and the next transaction / packet needs to include any "beginning of archive" data needs to be written again. Right now I'm accomplishing that by deleting the old archive and creating a new one. I'm looking for either a lighter weight alternative to that (preferably), or a way to make that delete / recreate lighter weight.
How about flush()? I implemented such a thing back in 2005: http://lists.boost.org/Archives/boost/2005/03/81544.php I would still find it useful, I have a lot of code that relies on anonymous scopes to control construction/destruction of archives, the code would look a lot more straightforward if I could just flush(). The use case is can be modeled the same was as sending packets over the network. Each packet needs to have internal pointer tracking, but independent of the others. -t