C++ named requirements: BinaryPredicate
From cppreference.com
                    
                                        
                    
                    
                                                            
                    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 value value, the expression  bin_pred(*iter1, *iter2) or, respectively, bin_pred(*iter, value), must be contextually convertible to bool.
In addition, evaluation of that expression is not allowed to call non-const member functions of the dereferenced iterators.
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 a range of elements   (function template)  | |
|    searches a range for a number of consecutive copies of an element   (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)  |