On Thu, 22 Mar 2007 09:32:37 -0000, Joaquín Mª López Muñoz
Hello Daniel, I think you are misunderstanding the problem.: the warning is *not* valid because it happens in 32 bit mode, where std::size_t is a typedef for unsigned int (no longs involved).
Sorry, you're right, I missed the context and thought he was compiling in 64 bit mode.
IMHO the right course of action is to not provide overloads for size_t, provide thenm for long and long long types, so guaranteeing that size_t will be covered by some overload either in 32 or 64 bit mode
I actually do this. 1.35 will have full long long support on any compiler which supports it, mixing up the value if sizeof(std::size_t) < sizeof(unsigned long long) - which is often true. I didn't put it into 1.34 because we had branched for release (in theory) and it was a new feature - so instead I have a simpler implementation just for 64-bit windows.
and then disabling the warning with a
// boost/hash/hash.hpp #pragma warning(push) #pragma warning(disable:4267) ... #pragma warning(pop)
because even if you've got everything covered /Wp64 won't be able to see it.
That would be the right thing to do, but I don't think avoiding a warning is important enough to break the code freeze. Sorry. If there's a 1.34.1 it'll be in it. Daniel