Namespaces
Variants

C++ named requirements: Predicate

From cppreference.net
C++ named requirements

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

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)