On 11/23/15 11:21 AM, Ernest Zaslavsky wrote:
Ok, I came up with quite ugly solution (see on coliru http://coliru.stacked-crooked.com/a/ba39b5a242e5c69b). but it works, however it is ugly in the way that it is up to user to apply encode/decode on members. Moreover it is the only way to encode value. I was aiming to something broader, for example, in array or vector the size is stored in archive, it is size_t and it occupies 64 bit, in case of small data chunks it is complete waste of storage. Is there a way to force all primitive types of choice to use my serialization instead of standard one? I mean is there a way to encode this aforementioned size_t in array serialization without rewriting its implementation?
I think you could make a much simpler more elegant solution using serialization wrappers - look in the documentation. But the broader question requires more thought. It sounds to me that you'd like to change how the archive class itself behaves. The way to do this is to derived from the archive class which has mostly what you want and override the handling of the types you're interested in. If you make your override accept the base archive as a template parameter, you can make your override applicable to any existing archive. I believe that the documentation has examples on how to do that as well. Robert Ramey