title: std::hash value on char* value and not on memory address?
body: <p>As stated in this <a href="http://en.cppreference.com/w/cpp/utility/hash" rel="noreferrer">link</a>:</p>
  
  <blockquote>
    <p>There is no specialization for C strings. std::hash produces a hash of the value of the pointer (the memory address), it does not examine the contents of any character array.</p>
  </blockquote>
  
  <p>Which means that with the same <code>char*</code> value, different hashcodes could be produced. For example, having this code:</p>
  
  <pre><code>//MOK and MOV are template arguments
  void emit(MOK key, MOV value) {
      auto h = hash&lt;MOK&gt;()(key);
      cout&lt;&lt;"key="&lt;&lt;key&lt;&lt;" h="&lt;&lt;h&lt;&lt;endl;
      ...
  </code></pre>
  
  <p>This is the output produced by calling 4 times <code>emit()</code> on the same <code>key</code> (with <code>MOK=char*</code>) value (but 4 different tokens/string objects):</p>
  
  <pre><code>key=hello h=140311481289184
  key=hello h=140311414180320
  key=hello h=140311414180326
  key=hello h=140311481289190
  </code></pre>
  
  <p>How can I obtain the same hash code for <code>char*</code>? I'd prefer not to use <code>boost</code></p>