#7437 closed Bugs (fixed)
No hash function for enums in Boost 1.51
Reported by: | Owned by: | Daniel James | |
---|---|---|---|
Milestone: | Boost 1.52.0 | Component: | hash |
Version: | Boost 1.51.0 | Severity: | Problem |
Keywords: | Cc: |
Description
Using enums as keys in maps has become problematic in Boost 1.51. The following code compiles with Microsoft Visual C++ 2010 under Boost 1.50, but not Boost 1.51:
#include <boost/unordered_map.hpp> class MyClass { public: enum eMyEnum { red, white, green }; }; typedef boost::unordered_map<MyClass::eMyEnum,std::string> MyMap; int main(int argc, char* argv[]) { MyMap m; MyMap::value_type v(MyClass::red,"apples"); m.insert(v); return 0; }
An extract from the error report is:
boost\functional\hash\extensions.hpp(257): error C2665: 'boost::hash_value' : none of the 2 overloads could convert all the argument types boost\functional\hash\hash.hpp(115): could be 'size_t boost::hash_value(std::type_index)' boost\functional\hash\extensions.hpp(160): or 'size_t boost::hash_value(const std::tr1::tuple<> &)'
Attachments (1)
Change History (3)
comment:1 by , 10 years ago
Milestone: | To Be Determined → Boost 1.52.0 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Version: | Boost 1.52.0 → Boost 1.51.0 |
Note:
See TracTickets
for help on using tickets.
Thanks for the bug report. This was fixed in [80292], which will be included in 1.52.