
David Abrahams wrote:
Consider an archive where unsigned int and unsigned long have a different internal representation. When a value of a size_t type is written on platform A, where size_t == unsigned int, platform B, where size_t == unsigned long, won't be able to read the file.
Sure, but I don't see what that has to do with the ambiguity in overload resolution you're pointing at above.
Not ambiguity, just that different overloads will be called on different platforms.
I don't think anyone is suggesting that we use size_t; int has a similar problem, after all. I thought Matthias was using a variable-length representation, but on inspection it looks like he's just using a "strong typedef" around std::size_t, which should work adequately for the purposes we're discussing.
A strong typedef should work, if all archives implement its serialization.