C++ named requirements: BinaryPredicate
BinaryPredicate es un conjunto de requisitos esperados por algunas de las facilidades de la biblioteca estándar de los argumentos proporcionados por el usuario.
Dado un
BinaryPredicate
bin_pred
y un par de iteradores
iter1
y
iter2
o un iterador
iter
y un valor (posiblemente
const
)
value
, el tipo y la categoría de valor de la expresión
bin_pred
(
*
iter1,
*
iter2
)
o, respectivamente,
bin_pred
(
*
iter, value
)
, deben cumplir con los requisitos de
BooleanTestable
.
Además, la evaluación de esa expresión no puede llamar a funciones miembro no constantes de los iteradores desreferenciados; sintácticamente, el predicado debe aceptar
const
argumentos de objeto, con el mismo comportamiento independientemente de si sus argumentos son
const
o no-
const
.
Requisitos
- Predicate
- CopyConstructible (a menos que se especifique lo contrario)
Biblioteca estándar
Las siguientes facilidades de la biblioteca estándar esperan un BinaryPredicate que no es un tipo Compare .
|
elimina elementos duplicados consecutivos
(función miembro pública de
std::forward_list<T,Allocator>
)
|
|
|
elimina elementos duplicados consecutivos
(función miembro pública de
std::list<T,Allocator>
)
|
|
|
encuentra la última secuencia de elementos en un rango determinado
(plantilla de función) |
|
|
busca cualquiera de un conjunto de elementos
(plantilla de función) |
|
|
encuentra los dos primeros elementos adyacentes que son iguales (o satisfacen un predicado dado)
(plantilla de función) |
|
|
encuentra la primera posición donde dos rangos difieren
(plantilla de función) |
|
|
determina si dos conjuntos de elementos son iguales
(plantilla de función) |
|
|
(C++11)
|
determina si una secuencia es una permutación de otra secuencia
(plantilla de función) |
|
busca la primera ocurrencia de un rango de elementos
(plantilla de función) |
|
|
busca la primera ocurrencia de un número de copias consecutivas de un elemento en un rango
(plantilla de función) |
|
|
elimina elementos duplicados consecutivos en un rango
(plantilla de función) |
|
|
crea una copia de algún rango de elementos que no contiene duplicados consecutivos
(plantilla de función) |
|
|
(obsoleto en C++17)
(eliminado en C++20)
|
construye un objeto personalizado
std::binary_negate
(plantilla de función) |
|
(C++11)
|
colección de claves únicas, hasheadas por claves
(plantilla de clase) |
|
(C++11)
|
colección de pares clave-valor, hasheadas por claves, claves únicas
(plantilla de clase) |
|
(C++11)
|
colección de claves, hasheadas por claves
(plantilla de clase) |
|
(C++11)
|
colección de pares clave-valor, hasheadas por claves
(plantilla de clase) |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
la convertibilidad de tipos de retorno a
bool
era demasiado débil
para reflejar la expectativa de implementaciones |
requisitos fortalecidos |
| LWG 3031 | C++98 |
los requisitos sobre valores
const
eran insuficientes
|
requisitos fortalecidos |