|
|
|
ThePredicate requirements describe a callable that returns aBooleanTestable 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 explainPredicate in simple terms. For detailed info, refer to individual pages.
In other words, if an algorithm takes aPredicatepred
and an iteratorfirst
, it should be able to test the object of the type pointed to by the iteratorfirst
using the given predicate via a construct likeif(pred(*first)){/*...*/}.
The function objectpred
shall not apply any non-constant function through the dereferenced iterator and must accept aconst
argument, with the same behavior regardless of whether the argument isconst
or non-const
. This function object may be a pointer to function or an object of a type with an appropriate function call operator.
This section is incomplete Reason: better describe actual requirements |
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 onconst values were insufficent | requirements strengthened |
(C++20) | specifies that a callable type is a Boolean predicate (concept)[edit] |