|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BinaryPredicate is a set of requirements expected by some of the standard library facilities from the user-provided arguments.
Given aBinaryPredicatebin_pred and a pair of iteratorsiter1 anditer2 or an iteratoriter and a (possiblyconst) valuevalue, the type and value category of the expressionbin_pred(*iter1,*iter2) or, respectively,bin_pred(*iter, value), must meet theBooleanTestable requirements.
In addition, evaluation of that expression is not allowed to call non-const member functions of the dereferenced iterators; syntactically, the predicate must acceptconst object arguments, with the same behavior regardless of whether its arguments areconst or non-const.
The following standard library facilities expect aBinaryPredicate which isn't aCompare type.
| removes consecutive duplicate elements (public member function of std::forward_list<T,Allocator>)[edit] | |
| removes consecutive duplicate elements (public member function of std::list<T,Allocator>)[edit] | |
| finds the last sequence of elements in a certain range (function template)[edit] | |
| searches for any one of a set of elements (function template)[edit] | |
| finds the first two adjacent items that are equal (or satisfy a given predicate) (function template)[edit] | |
| finds the first position where two ranges differ (function template)[edit] | |
| determines if two sets of elements are the same (function template)[edit] | |
(C++11) | determines if a sequence is a permutation of another sequence (function template)[edit] |
| searches for the first occurrence of a range of elements (function template)[edit] | |
| searches for the first occurrence of a number consecutive copies of an element in a range (function template)[edit] | |
| removes consecutive duplicate elements in a range (function template)[edit] | |
| creates a copy of some range of elements that contains no consecutive duplicates (function template)[edit] | |
(deprecated in C++17)(removed in C++20) | constructs customstd::binary_negate object (function template)[edit] |
(C++11) | collection of unique keys, hashed by keys (class template)[edit] |
(C++11) | collection of key-value pairs, hashed by keys, keys are unique (class template)[edit] |
(C++11) | collection of keys, hashed by keys (class template)[edit] |
(C++11) | collection of key-value pairs, hashed by keys (class template)[edit] |
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2114 (P2167R3) | C++98 | convertibility of return types tobool was too weak to reflect the expectation of implementations | requirements strengthened |
| LWG 3031 | C++98 | requirements onconst values were insufficent | requirements strengthened |