
On Sat, Feb 11, 2006 at 03:21:55PM -0800, Matthias Troyer wrote:
On Feb 11, 2006, at 2:16 PM, Kim Barrett wrote:
The count should be some type that has a fixed (up to byte-order issues) representation, i.e. something like uint64_t.
Or one can leave it up to the archive to decide how to store the count. That's why I proposed to introduce a collection_size_type object storing the count. Any archive can then decide for itself how to serialize it, whether as unsigned int, uint64_t or whatever you like.
I'm for this as well... this issue comes up in basic_binary_i/oprimitive.ipp as well as in collections_save_imp.hpp: template<class Archive, class OStream> BOOST_ARCHIVE_OR_WARCHIVE_DECL(void) basic_binary_oprimitive<Archive, OStream>::save(const char * s) { std::size_t l = std::strlen(s); this->This()->save(l); save_binary(s, l); } One can fix this by implementing one's own portable binary primitives (which is what we've done), but that does involve duplicating a lot of library code in order to change a few lines. The special type for collection size (if applied consistently) seems cleaner. -t