title: C++ std::hash return type
body: <p>So I've been reading a lot of articles, documentation pages, posts, benchmarks, etc., concerning the use of <code>std::hash</code> and its standard implementations.</p>
  <h2>Synopsis</h2>
  <p>Looking <a href="https://en.cppreference.com/w/cpp/utility/hash" rel="nofollow noreferrer">here</a> it seems that <code>std::hash</code> will always return an <code>std::size_t</code>, which following from <a href="https://en.cppreference.com/w/cpp/types/size_t" rel="nofollow noreferrer">here</a> is <em>at least</em> 16 bits or 2 bytes in size, though it is implementation-dependent.</p>
  <p>But this concerns me. How can I use <code>std::hash</code> on strings then, if I cannot even have the guarantee that the hash will be at least 32 bits (and I would really like it to return 64 bits).</p>
  <p>On my particular x64 machine <code>std::size_t</code> is defined as <code>long unsigned int</code>, but apparently this is not guaranteed when I deploy my program.</p>
  <h3>Qustion</h3>
  <p>Is there a way around this, so I can know for sure that I get a 64-bit hash returned from <code>std::hash</code> ?</p>
  <h3>Conclusion</h3>
  <p>Judging from the comments, <code>std::hash</code> will not be suitable. Thanks!</p>