Skip to content

Latest commit

 

History

History
60 lines (46 loc) · 2 KB

File metadata and controls

60 lines (46 loc) · 2 KB
title C++ named requirements: Hash
cppdoc
revision
since
C++11

import { DR, DRList } from "@components/defect-report"; import { Desc, DescList } from "@components/desc-list"; import DocLink from "@components/DocLink.astro" import { Revision, RevisionBlock } from "@components/revision";

A Hash is a function object for which the output depends only on the input and has a very low probability of yielding the same output given different input values.

Requirements

The type T satisfies Hash if

The type T satisfies FunctionObject, CopyConstructible, Destructible, and Given

  • h, a value of type T or const T, whose argument type is Key,
  • k, a value of type convertible to Key or const Key,
  • u, an lvalue expression of type Key.

The following expressions must be valid and have their specified effects.

Expression Return type Requirements
h(k) std::size_t The returned value depends only on the value of k for the duration of the program.
All evaluations of h(k) executed within a given execution of a program yield the same result for the same value of k.
The probability of h(a) == h(b) for a != b should approach 1.0 / std::numeric_limits<std::size_t>::max().
h(u) std::size_t u is not modified.

Standard Library

`hash` hash function object

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

same results for same arguments were required in all cases only required within a single execution