[#absl-HashOf]
= xref:absl.adoc[absl]::HashOf
:relfileprefix: ../
:mrdocs:

Generate a hash from the values of its arguments&period;

== Synopsis

Declared in `&lt;absl&sol;hash&sol;hash&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    int& ExplicitArgumentBarrier&period;&period;&period;,
    typename&period;&period;&period; Types&gt;
size&lowbar;t
HashOf(Types const&&period;&period;&period; values);
----

== Description

absl&colon;&colon;HashOf() is a helper that generates a hash from the values of its arguments&period; It dispatches to absl&colon;&colon;Hash directly, as follows&colon; &ast; HashOf(t) &equals;&equals; absl&colon;&colon;Hash&lt;T&gt;&lcub;&rcub;(t) &ast; HashOf(a, b, c) &equals;&equals; HashOf(std&colon;&colon;make&lowbar;tuple(a, b, c))

HashOf(a1, a2, &period;&period;&period;) &equals;&equals; HashOf(b1, b2, &period;&period;&period;) is guaranteed when &ast; The argument lists have pairwise identical C&plus;&plus; types &ast; a1 &equals;&equals; b1 &amp;&amp; a2 &equals;&equals; b2 &amp;&amp; &period;&period;&period;

The requirement that the arguments match in both type and value is critical&period; It means that `a &equals;&equals; b` does not necessarily imply `HashOf(a) &equals;&equals; HashOf(b)` if `a` and `b` have different types&period; For example, `HashOf(2) !&equals; HashOf(2&period;0)`&period;

== Return Value

The combined hash of the arguments&period;

== Parameters

[cols="1,4"]
|===
| Name| Description
| *values*
| The values to hash together&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
