|
Boost Users : |
Subject: Re: [Boost-users] Boost.Unordered throws 64-bit portability warnings
From: Daniel James (daniel_james_at_[hidden])
Date: 2009-05-21 15:36:01
2009/5/21 Dominique Devienne <ddevienne_at_[hidden]>:
>
> FWIW, I'm getting these as well when using
> boost::hash_combine(hash_value(this->member_)); to implement hashes
> for my classes. We also use VS2005 with the compiler switch that
> raises these warnings. My work around below is not pretty... --DD
>
> #if ACME_SIZEOF_SIZE_T == 4
> // Avoid warning C4267: 'argument' :
> // conversion from 'size_t' to 'unsigned int', possible loss of data
> boost::hash_combine(
> seed, static_cast<unsigned int>(hash_value(member_))
> );
> #else
> boost::hash_combine(seed, hash_value(member_));
> #endif
Doesn't 'boost::hash_combine(seed, member_)' work?
I'll have a look at the warning when I get the chance, but AFAICT
they're wrong since when compiling for 64-bit a different overload or
template resolution would be chosen.
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