title: Can't use enum class as unordered_map key
body: <p>I have a class containing an enum class.</p>
  
  <pre><code>class Shader {
  public:
      enum class Type {
          Vertex   = GL_VERTEX_SHADER,
          Geometry = GL_GEOMETRY_SHADER,
          Fragment = GL_FRAGMENT_SHADER
      };
      //...
  </code></pre>
  
  <p>Then, when I implement the following code in another class...</p>
  
  <pre><code>std::unordered_map&lt;Shader::Type, Shader&gt; shaders;
  </code></pre>
  
  <p>...I get a compile error.</p>
  
  <pre><code>...usr/lib/c++/v1/type_traits:770:38: 
  Implicit instantiation of undefined template 'std::__1::hash&lt;Shader::Type&gt;'
  </code></pre>
  
  <p>What is causing the error here?</p>