
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of John Maddock Sent: Thursday, November 12, 2009 1:04 PM To: boost@lists.boost.org Subject: Re: [boost] Official warnings policy?
Delving into this a bit deeper, I believe the warning is correct, and cannot / should not be fixed, to recap we have:
d:\data\boost\trunk\boost/variant/variant.hpp(1297) : warning C4244: 'argument' : conversion from 'const int' to 'const short', possible loss of data <snip> The code calls Variant's converting-assignment operator, and Boost.Variant internally decides what type to convert the argument to and makes the assignment. In this case the user *should* see a warning to be alerted to the fact that the internal conversion results in loss of precision (likewise they would see an error in this location if there is no suitable conversion).
I notice that the code in question has a comment to this effect:
// NOTE TO USER : // Compile error here indicates one of the source variant's types // cannot be unambiguously converted to the destination variant's // types (or that no conversion exists).
But perhaps we should add a similar note about compiler warnings?
Yes. If the intention (boring) of the test is to provide an unsigned short int '58US' or static_cast<unsigned short int>(58), then there should not be a warning, but I agree that it is probably intended (more interestingly) to provide an unsigned int (58) and demonstrate that this will involve loss of precision and *will* give a warning. But it does need a comment. Paul --- Paul A. Bristow Prizet Farmhouse Kendal, UK LA8 8AB +44 1539 561830, mobile +44 7714330204 pbristow@hetp.u-net.com