C++ named requirements: Predicate - cppreference.com (original) (raw)

The Predicate requirements describe a callable that returns a BooleanTestable value.

Predicate is typically used with algorithms that take input data (individual objects/containers) and a predicate, which is then called on input data to decide on further course of action. Some examples of predicate usage in C++ standard library are:

Description of algorithm facilities, given above, is crude and intended to explain Predicate in simple terms. For detailed info, refer to individual pages.

In other words, if an algorithm takes a Predicate pred and an iterator first, it should be able to test the object of the type pointed to by the iterator first using the given predicate via a construct like if (pred(*first)) { /*...*/ }.

The function object pred shall not apply any non-constant function through the dereferenced iterator and must accept a const argument, with the same behavior regardless of whether the argument is const or non-const. This function object may be a pointer to function or an object of a type with an appropriate function call operator.

[edit] Requirements

[edit] Defect reports

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

DR Applied to Behavior as published Correct behavior
LWG 3031 C++98 requirements on const values were insufficent requirements strengthened

[edit] See also

| | specifies that a callable type is a Boolean predicate (concept) [edit] | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |