C++11 Hash-Funktion für jede enum-Typ

Schreibe ich eine hash-Funktion für mein Objekt. Ich kann schon hash-Behälter und kombinieren hashes, Dank Generische Hash-Funktion für alle STL-Container. Aber meine Klassen haben auch enums. Natürlich kann ich erstellen Sie eine hash-Funktion für jeden enum, aber es scheint nicht wie eine gute Idee. Ist es möglich, einige Allgemeine Spezifikation für std::hash, so dass es verwendet werden könnte, um jedes enum? So etwas wie, dass, mit std::enable_if und std::is_enum

namespace std {
  template <class E>
  class hash<typename std::enable_if<std::is_enum<E>::value, E>::type> {
  public:
    size_t operator()( const E& e ) const {
      return std::hash<std::underlying_type<E>::type>()( e );
    }
  };
};

PS. Dieser code wird nicht kompiliert

error: template parameters not used in partial specialization:
error:         E
InformationsquelleAutor Draco Ater | 2012-03-10
Schreibe einen Kommentar