Como especializar std :: hash <Key> :: operator () para o tipo definido pelo usuário em contêineres não ordenados?

Para oferecer suporte a tipos de chaves definidas pelo usuário em std::unordered_set<Key>e std::unordered_map<Key, Value> é necessário fornecer operator==(Key, Key)um functor hash: struct X { int id; /* ... */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash {...