Files
cppdraft_translate/cppdraft/hash/requirements.md
2025-10-25 03:02:53 +03:00

2.7 KiB
Raw Blame History

[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]

1

#

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.

2

#

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 37Cpp17Hash 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.