So the library I use has an enum (say it's named LibEnum
). I need to have an std::unordered_set
of LibEnum
, but I get compilation error that there is no specialized std::hash
for it. I could easily write it and just return the number of value (first element is 0, second 1 etc), but where exactly I should put this specialization and how should it look like? I can't modify the library sources.
enum LibEnum { A, B, C, D};
std::unordered_set <LibEnum> mySet;
//need std::hash for LibEnum
//how should it look like?
You can just specialise
std::hash
for your type:Alternatively, you can define a
hash
type where ever you like and just provide it as the additional template argument when instantiatingstd::unordered_map<FooEnum>
:Neither methods require you to modify the library.