Subject: [boost] [Serialization]#3118 basic_binary_oarchive.hpp - save_override possible loss of data warnings
From: Jeff Flinn (TriumphSprint2000_at_[hidden])
Date: 2009-06-01 08:47:20
I've posted the following ticket in light of the current bug sprint.
The following save_override overloads cause possible loss of data
warnings on MSVC8 and XCode3.1.2/gcc4.0.1
void save_override(const version_type & t, int)
void save_override(const class_id_type & t, int)
void save_override(const class_id_reference_type & t, int)
with their respective assignments:
const unsigned char x = t.t;
const int_least16_t x = t.t;
While a possible fix would be:
const unsigned char x = static_cast<unsigned char>(t.t);
const int_least16_t x = static_cast<int_least16_t>(t.t);
there is still a possibility of a silent loss of data.
We could be safer and use numeric_cast, but that would possibly impact
code size and performance, and would introduce a library dependency.
Why are the xxx_type strong typedef's using int rather than the smaller
types that are being serialized?
Any thoughts on the best solution?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk