On 3/16/07, Joaquín Mª López Muñoz
Hello Andrew,
Andrew Holden ha escrito:
Joaquín Mª López Muñoz wrote:
Filip Konvi?ka ha escrito:
Aye, I got the following warning that I could not get rid of (VC 7.1)
C:\Boost\include\boost-1_33_1\boost\functional\hash\hash.hpp(132) : warning C4267: 'argument' : conversion from 'size_t' to 'unsigned int', possible loss of data
[...]
Looks like an overzealous or simply misguided warning. Can you please try the following?
[...]
Same warning? If so, you might ask for inclusion of a suitable #pragma warning(disable...) to the Boost.Hash author.
Depending on your concern for portability, you might not want to dismiss this warning. VC 7.1 and 8.0 provide it as part of their 64 bit portability warnings (size_t will be 64 bits wide on 64-bit Windows, while unsigned int will remain 32 bits). A better way to eliminate the warning might be to switch off the 64 bit portability warnings in your project options.
I'm not advocating that the warning be completely disabled, but only in a selective manner inside Boost.Hash code by using #pragma warning(push) and #pragma warning(pop):
// boost/hash/hash.hpp #pragma warning(push) #pragma warning(disable:4267) ... #pragma warning(pop)
Maybe it would be better if boost::hash included a size_t version:
inline std::size_t hash_value(std::size_t v)
{
return v;
}
If necessary, in cases where std::size_t == unsigned int, it could
probably use is_same