Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#7437 closed Bugs (fixed)

No hash function for enums in Boost 1.51

Reported by: Steven Barbaglia <steven.barbaglia@…> 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)

build_errors.txt (4.7 KB ) - added by Steven Barbaglia <steven.barbaglia@…> 10 years ago.
Full error report from MSVC 2010

Download all attachments as: .zip

Change History (3)

comment:1 by Daniel James, 10 years ago

Milestone: To Be DeterminedBoost 1.52.0
Resolution: fixed
Status: newclosed
Version: Boost 1.52.0Boost 1.51.0

Thanks for the bug report. This was fixed in [80292], which will be included in 1.52.

by Steven Barbaglia <steven.barbaglia@…>, 10 years ago

Attachment: build_errors.txt added

Full error report from MSVC 2010

comment:2 by Steven Barbaglia <steven.barbaglia@…>, 10 years ago

Great news! Thank you.

Note: See TracTickets for help on using tickets.