
On 28 Jul 2010, at 11:50, Robert Ramey wrote:
In these implementations, I did in fact depend on the fact that some internal types were not primitive - though convertible to primitives. I think Matthias did the same but I'm not sure. I think Matthias got surprised when I removed default constructability.
Yes, that broke Boost.MPI for the Sun compiler.
But he also got surprised when I changed class_id_type from unsigned int to least_16_t which surprised me since I thought the latter was just a typedef and not a true class.
Actually not. The breaking was caused by another change you did at the same time.
I also never anticipated that anyone would care about the list of internally used types as I never needed such a list in the archives I had already created.
In any case, make a concept for an archive called "All encompassing archive" similar to the family that we have would be quite a bit of work - and out of proportion to it's value in my opinion. And suppose I felt that it should not be necessary to provide a comprehensive internal types and Matthias did. We'd be back in the same soup.
All you need to do is document what a class deriving from common archive has to implement. These are - the save/load function for - a well-defined set of primitive types with a well-defined interfaced - and save_binary/load_binary. Matthias