Boost logo

Boost Users :

From: Daniel James (daniel_james_at_[hidden])
Date: 2007-03-22 14:18:51


On Thu, 22 Mar 2007 09:32:37 -0000, Joaquín Mª López Muñoz
<joaquin_at_[hidden]> wrote:

> 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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net