C++ named requirements: BinaryPredicate
BinaryPredicate is a set of requirements expected by some of the standard library facilities from the user-provided arguments.
Given a
BinaryPredicate
bin_pred
and a pair of iterators
iter1
and
iter2
or an iterator
iter
and a (possibly
const
) value
value
, the type and value category of the expression
bin_pred
(
*
iter1,
*
iter2
)
or, respectively,
bin_pred
(
*
iter, value
)
, must meet the
BooleanTestable
requirements.
In addition, evaluation of that expression is not allowed to call non-const member functions of the dereferenced iterators; syntactically, the predicate must accept
const
object arguments, with the same behavior regardless of whether its arguments are
const
or non-
const
.
Requirements
- Predicate
- CopyConstructible (unless otherwise specified)
Standard library
The following standard library facilities expect a BinaryPredicate which isn't a Compare type.
removes consecutive duplicate elements
(public member function of
std::forward_list<T,Allocator>
)
|
|
removes consecutive duplicate elements
(public member function of
std::list<T,Allocator>
)
|
|
finds the last sequence of elements in a certain range
(function template) |
|
searches for any one of a set of elements
(function template) |
|
finds the first two adjacent items that are equal (or satisfy a given predicate)
(function template) |
|
finds the first position where two ranges differ
(function template) |
|
determines if two sets of elements are the same
(function template) |
|
(C++11)
|
determines if a sequence is a permutation of another sequence
(function template) |
searches for the first occurrence of a range of elements
(function template) |
|
searches for the first occurrence of a number consecutive copies of an element in a range
(function template) |
|
removes consecutive duplicate elements in a range
(function template) |
|
creates a copy of some range of elements that contains no consecutive duplicates
(function template) |
|
(deprecated in C++17)
(removed in C++20)
|
constructs custom
std::binary_negate
object
(function template) |
(C++11)
|
collection of unique keys, hashed by keys
(class template) |
(C++11)
|
collection of key-value pairs, hashed by keys, keys are unique
(class template) |
(C++11)
|
collection of keys, hashed by keys
(class template) |
(C++11)
|
collection of key-value pairs, hashed by keys
(class template) |
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 2114
( P2167R3 ) |
C++98 |
convertibility of return types to
bool
was too weak
to reflect the expectation of implementations |
requirements strengthened |
LWG 3031 | C++98 |
requirements on
const
values were insufficent
|
requirements strengthened |