A type H meets the Hash requirements if:

it is a function object type,

it satisfies the requirements of CopyConstructible and Destructible, and

the expressions shown in Table 29 are valid and have the indicated semantics.

Given Key is an argument type for function objects of type H, in Table 29 h is a value of type (possibly const) H, u is an lvalue of type Key, and k is a value of a type convertible to (possibly const) Key.

Table 29 — Hash requirements

Expression | Return type | Requirement |

h(k) | size_t | The value returned shall depend only on the argument k for the duration of the program. [ Note: Thus all evaluations of the expression h(k) with the same value for k yield the same result for a given execution of the program. — end note ] [ Note: For two different values t1 and t2, the probability that h(t1) and h(t2) compare equal should be very small, approaching 1.0 / numeric_limits<size_t>::max(). — end note ] |

h(u) | size_t | Shall not modify u. |