C++ - Why is boost::hash_combine the best way to combine hash-values?
<p>I've read in other posts that this seems to be the best way to combine hash-values. Could somebody please break this down and explain why this is the best way to do it?</p>

<pre><code>template &lt;class T&gt;
inline void hash_combine(std::size_t&amp; seed, const T&amp; v)
{
    std::hash&lt;T&gt; hasher;
    seed ^= hasher(v) + 0x9e3779b9 + (seed&lt;&lt;6) + (seed&gt;&gt;2);
}
</code></pre>

<p>Edit: The other question is only asking for the magic number, but I'd like to get  know about the whole function, not only this part.</p>