Possible implementation:
template<typename EnumClass>
struct EnumClassHash
{
std::hash<unsigned char>::result_type operator()(
const EnumClass & arg) const
{
static std::hash<unsigned char> hasher;
return hasher(static_cast<unsigned char>(arg));
}
};
Possible usage:
template <>
struct hash<MyEnumClass> : EnumClassHash<MyEnumClass> {};