C++ named requirements: Predicate
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Les Predicate requirements décrivent un objet appelable qui retourne une valeur BooleanTestable .
Predicate est généralement utilisé avec des algorithmes qui prennent des données d'entrée (objets individuels/conteneurs) et un prédicat, qui est ensuite appelé sur les données d'entrée pour décider de la suite de l'action. Quelques exemples d'utilisation de prédicat dans la bibliothèque standard C++ sont :
- std::all_of , std::any_of , std::none_of Prendent un tableau d'éléments et un prédicat en entrée. Appellent le prédicat sur les éléments individuels de l'entrée, et retournent vrai si pour tous/au moins un/aucun élément, le prédicat retourne vrai.
- std::find_if Prend une séquence d'éléments et un prédicat. Retourne le premier élément de la séquence pour lequel le prédicat renvoie une valeur égale à true .
La description des fonctionnalités algorithmiques, donnée ci-dessus, est sommaire et vise à expliquer Predicate en termes simples. Pour des informations détaillées, veuillez consulter les pages individuelles.
En d'autres termes, si un algorithme prend un
Predicate
pred
et un itérateur
first
, il devrait être capable de tester l'objet du type pointé par l'itérateur
first
en utilisant le prédicat donné via une construction comme
if
(
pred
(
*
first
)
)
{
/*...*/
}
.
L'objet fonction
pred
ne doit pas appliquer de fonction non constante via l'itérateur déréférencé et doit accepter un argument
const
, avec le même comportement que l'argument soit
const
ou non-
const
. Cet objet fonction peut être un pointeur vers une fonction ou un objet d'un type avec un opérateur d'appel de fonction approprié.
Exigences
|
Cette section est incomplète
Raison : mieux décrire les exigences réelles |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3031 | C++98 |
les exigences sur les valeurs
const
étaient insuffisantes
|
exigences renforcées |
Voir aussi
|
(C++20)
|
spécifie qu'un type appelable est un prédicat booléen
(concept) |