17 Library introduction [library]

17.6 Library-wide requirements [requirements]

17.6.3 Requirements on types and expressions [utility.requirements]

17.6.3.4 Hash requirements [hash.requirements]

A type H meets the Hash requirements if:

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.

Table 26Hash 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.