A type H meets the Hash requirements if:
it is a function object type ([function.objects]),
it satisfies the requirements of CopyConstructible and Destructible ([utility.arg.requirements]), and
the expressions shown in Table [hash] are valid and have the indicated semantics.
Given Key is an argument type for function objects of type H, in Table [hash] 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.
Expression | Return type | Requirement |
h(k) | size_t | The value returned shall depend only on the argument k. [ Note: Thus all evaluations of the expression h(k) with the same value for k yield the same result. — 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. |