|
Boost Users : |
From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2007-03-15 11:23:03
Filip Konvi?ka ha escrito:
> > Looks like an overzealous or simply misguided warning. Can you please
> > try the following?
> >
> > #include <boost/functional/hash/hash.hpp>
> > #include <cstddef>
> >
> > int main()
> > {
> > std::size_t x=0;
> > boost::hash<std::size_t>()(x);
> > }
> >
> > Same warning? If so, you might ask for inclusion of a suitable
> > #pragma warning(disable...) to the Boost.Hash author.
> >
> Yes...in fact,
>
> boost::hash<unsigned int>()(x);
>
> works fine, since the function being called (via boost::hash and
> boost::call_hash) is defined as
>
> inline std::size_t hash_value(unsigned int v)
> {
> return static_cast<std::size_t>(v);
> }
Do you mean hash_value(unsigned int) is also invoked when using
boost::hash<std::size_t>, right?
> There are other variants of this function, taking bool, int, etc. as the
> argument, but no size_t.
This is correct, because std::size_t is a typedef to some builtin
unsigned integer type.
> I'm not sure what is the official interface of boost::hash, so I don't
> know whether it's being used correctly in multi_index or not.
I hope Boost.Hash is used correctly by Boost.MultiIndex :) but anyway
the issue has little to do with the last lib since the snippet I provided in
my previous post (involving only Boost.Hash) replicates the warning.
Are you compiling with /Wp64 (Detect 64-Bit Portability Issues)? If
so, could you please:
a) look in your stdlib headers (most likely in stddef.h) how size_t is
defined?
b) try the following snippet and report whether the warning persists?
#include <cstddef>
void foo(unsigned int){}
int main()
{
std::size_t x=0;
foo(x);
}
Thank you!
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
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