C++ named requirements: Predicate
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Los Predicate requirements describen un objeto invocable que retorna un valor BooleanTestable .
Predicate se utiliza típicamente con algoritmos que toman datos de entrada (objetos individuales/contenedores) y un predicate, que luego se llama sobre los datos de entrada para decidir el curso de acción posterior. Algunos ejemplos de uso de predicate en la biblioteca estándar de C++ son:
- std::all_of , std::any_of , std::none_of Toman un array de elementos y un predicado como entrada. Llaman al predicado sobre elementos individuales de entrada, y retornan verdadero si para todos/algún/ningún elemento, el predicado retorna verdadero.
- std::find_if Toma una secuencia de elementos y un predicado. Devuelve el primer elemento en la secuencia para el cual el predicado retorna un valor igual a true .
La descripción de las facilidades del algoritmo, dada anteriormente, es básica y pretende explicar Predicate en términos simples. Para información detallada, consulte las páginas individuales.
En otras palabras, si un algoritmo toma un
Predicate
pred
y un iterador
first
, debería poder evaluar el objeto del tipo apuntado por el iterador
first
usando el predicado dado mediante una construcción como
if
(
pred
(
*
first
)
)
{
/*...*/
}
.
El objeto función
pred
no debe aplicar ninguna función no constante a través del iterador desreferenciado y debe aceptar un argumento
const
, con el mismo comportamiento independientemente de si el argumento es
const
o no-
const
. Este objeto función puede ser un puntero a función o un objeto de un tipo con un operador de llamada a función apropiado.
Requisitos
|
Esta sección está incompleta
Razón: describir mejor los requisitos reales |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3031 | C++98 |
los requisitos sobre
const
valores eran insuficientes
|
requisitos fortalecidos |
Véase también
|
(C++20)
|
especifica que un tipo invocable es un predicado booleano
(concept) |