C++ named requirements: BinaryPredicate
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BinaryPredicate est un ensemble d'exigences attendues par certaines fonctionnalités de la bibliothèque standard pour les arguments fournis par l'utilisateur.
Étant donné un
BinaryPredicate
bin_pred
et une paire d'itérateurs
iter1
et
iter2
ou un itérateur
iter
et une valeur (éventuellement
const
)
value
, le type et la catégorie de valeur de l'expression
bin_pred
(
*
iter1,
*
iter2
)
ou, respectivement,
bin_pred
(
*
iter, value
)
, doivent satisfaire aux exigences
BooleanTestable
.
De plus, l'évaluation de cette expression n'est pas autorisée à appeler des fonctions membres non constantes des itérateurs déréférencés ; syntaxiquement, le prédicat doit accepter
const
des arguments d'objet, avec le même comportement que ses arguments soient
const
ou non-
const
.
Exigences
- Predicate
- CopyConstructible (sauf indication contraire)
Bibliothèque standard
Les fonctionnalités suivantes de la bibliothèque standard s'attendent à un BinaryPredicate qui n'est pas un type Compare.
| supprime les éléments dupliqués consécutifs (fonction membre publique de std::forward_list<T,Allocator>)
| |
| supprime les éléments dupliqués consécutifs (fonction membre publique de std::list<T,Allocator>)
| |
| recherche la dernière séquence d'éléments dans une plage (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| recherche l'un des éléments d'un ensemble (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| recherche les deux premiers éléments adjacents qui sont égaux (ou satisfont un prédicat donné) (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| recherche la première position où deux plages diffèrent (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| détermine si deux ensembles d'éléments sont identiques (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
(C++11) |
détermine si une séquence est une permutation d'une autre séquence (gabarit de fonction & objet fonction d'algorithme) |
(C++20) |
|
| recherche la première occurrence d'une plage d'éléments (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| recherche la première occurrence d'un certain nombre de copies consécutives d'un élément dans une plage (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| supprime les éléments dupliqués consécutifs dans une plage (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
| crée une copie d'une plage d'éléments sans doublons consécutifs (gabarit de fonction & objet fonction d'algorithme) | |
(C++20) |
|
(obsolète en C++17)(supprimé en C++20) |
construit un objet personnalisé std::binary_negate (gabarit de fonction) |
(C++11) |
collection de clés uniques, hachées par les clés (gabarit de classe) |
(C++11) |
collection de paires clé-valeur, hachées par les clés, les clés sont uniques (gabarit de classe) |
(C++11) |
collection de clés, hachées par les clés (gabarit de classe) |
(C++11) |
collection de paires clé-valeur, hachées par les clés (gabarit de classe) |
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 | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
la convertibilité des types de retour vers
bool
était trop faible
pour refléter les attentes des implémentations |
exigences renforcées |
| LWG 3031 | C++98 |
les exigences sur les valeurs
const
étaient insuffisantes
|
exigences renforcées |