Boost logo

Boost Users :

Subject: [Boost-users] [Hash] Custom hash_value for Pointers
From: Hossein Haeri (powerprogman_at_[hidden])
Date: 2010-08-27 13:53:09


Dear all,

Should not the program in the P.S. output "I got used!"? If not, how can I ensure that it's size_t hash_value(B*) which gets called upon use of bPtrHasher's operator()?

TIA,
--Hossein

P.S.

namespace Bs
{
struct B
{
  virtual string id() const {return "This is a B!";}
};

struct D: B
{
  string id() const {return "And, this one is a D.";}
};

size_t hash_value(B* bptr)
{
  cout << "I got used!" << endl;
  boost::hash<string> hasher;
  return hasher(bptr->id());
}
}

int main()
{
  Bs::B* bp1 = new Bs::B;
  Bs::B* bp2 = new Bs::D;
  boost::hash<Bs::B*> bPtrHasher;
  size_t h1 = bPtrHasher(bp1), h2 = bPtrHasher(bp2);
}


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