Espacios de nombres
Variantes
Acciones

std::predicate

De cppreference.com
< cpp‎ | concepts
Definido en el archivo de encabezado <concepts>
template < class F, class... Args >

concept predicate =
  std::regular_invocable<F, Args...> &&

  boolean-testable<std::invoke_result_t<F, Args...>>;
(desde C++20)

El concepto predicate<F, Args...> especifica que F es un predicado que acepta argumentos cuyos tipos y categorías de valor están codificados por Args..., es decir, puede ser invocado con estos argumentos para producir un resultado boolean-testable.

Observa que regular_invocable requiere que la invocación no modifique ni el objeto invocable, ni los argumentos, y conserve la igualdad.

[editar] Conservación de la igualdad

Una expresión es conservadora de igualdad si resulta en salidas iguales dadas entradas iguales.

  • Las entradas de una expresión consisten en sus operandos.
  • Las salidas de una expresión consisten en su resultado y todos los operandos modificados por la expresión (si es que los hay).

Cada expresión que se requiere sea conservadora de igualdad, se requiere además que sea estable: dos evaluaciones de tal expresión con los mismos objetos de entrada debe tener salidas iguales si no se encuentra alguna modificación interventora de esos objetos de entrada.