2.7 KiB
2.7 KiB
[hash.requirements]
16 Library introduction [library]
16.4 Library-wide requirements [requirements]
16.4.4 Requirements on types and expressions [utility.requirements]
16.4.4.5 Cpp17Hash requirements [hash.requirements]
A type H meets the Cpp17Hash requirements if
it is a function object type ([function.objects]),
it meets the Cpp17CopyConstructible (Table 32) and Cpp17Destructible (Table 35) requirements, and
the expressions shown in Table 37 are valid and have the indicated semantics.
Given Key is an argument type for function objects of type H, in Table 37 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 37 — Cpp17Hash requirements [tab:cpp17.hash]
| ð 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 1: 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] 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(). |
| ð h(u) |
size_t | Shall not modify u. |