Named Requirements
From cppreference.net
<
cpp
Les exigences nommées listées sur cette page sont les exigences nommées utilisées dans le texte normatif de la norme C++ pour définir les attentes de la bibliothèque standard.
La responsabilité de s'assurer que les modèles de bibliothèque sont instanciés avec des arguments de modèle qui satisfont à ces exigences incombe au programmeur. Le fait de ne pas le faire peut entraîner des diagnostics de compilation très complexes.
Certaines de ces exigences sont formalisées dans C++20 en utilisant la fonctionnalité du langage concepts .
Basic |
||
|
spécifie qu'un objet du type peut être construit par défaut
(exigence nommée) |
||
|
(C++11)
|
spécifie qu'un objet du type peut être construit à partir d'une rvalue
(exigence nommée) |
|
|
spécifie qu'un objet du type peut être construit à partir d'une lvalue
(exigence nommée) |
||
|
(C++11)
|
spécifie qu'un objet du type peut être assigné à partir d'une rvalue
(exigence nommée) |
|
|
spécifie qu'un objet du type peut être assigné à partir d'une lvalue
(exigence nommée) |
||
|
spécifie qu'un objet du type peut être détruit
(exigence nommée) |
||
Propriétés des types |
||
|
Remarque : la norme ne définit pas d'exigences nommées avec les noms spécifiés dans cette sous-catégorie.
Ce sont des catégories de types définies par le langage de base. Elles sont incluses ici comme exigences nommées uniquement par souci de cohérence. |
||
|
types d'objets qui ne sont pas des types tableau ou des types classe
(exigence nommée) |
||
|
(obsolète en C++20)
|
Types POD (Plain Old Data), compatibles avec le C
struct
(exigence nommée) |
|
|
(C++11)
|
les objets de ces types peuvent conserver leurs valeurs après copie de leurs octets sous-jacents
(exigence nommée) |
|
|
(C++11)
(obsolète en C++26)
|
les objets de ces types peuvent être construits et copiés trivialement
(exigence nommée) |
|
|
(C++11)
|
ces types sont utiles pour communiquer avec du code écrit dans d'autres langages de programmation
(exigence nommée) |
|
|
les objets de ces types peuvent être créés implicitement, et leur durée de vie peut être démarrée implicitement
(exigence nommée) |
||
À l'échelle de la bibliothèque |
||
|
les opérations booléennes (
operator
&&
,
operator
||
, et
operator
!
) ont une sémantique usuelle
(exigence nommée) |
||
operator==
est une relation d'équivalence
(exigence nommée) |
||
operator<
est une relation d'ordre strict faible
(exigence nommée) |
||
|
peut être échangé avec un appel de fonction non-membre non qualifié
swap
(
)
(exigence nommée) |
||
|
(C++11)
|
un
LegacyIterator
qui déréférence vers un type
Swappable
(exigence nommée) |
|
|
(C++11)
|
un type similaire à un pointeur prenant en charge une valeur nulle
(exigence nommée) |
|
|
(C++11)
|
un
FunctionObject
qui, pour des entrées avec des valeurs différentes, a une faible probabilité de produire la même sortie
(exigence nommée) |
|
|
un type de classe qui contient des informations d'allocation
(exigence nommée) |
||
|
un objet qui peut être appelé avec la syntaxe d'appel de fonction
(exigence nommée) |
||
|
un type pour lequel l'opération d'invocation est définie
(exigence nommée) |
||
|
un
FunctionObject
qui retourne une valeur convertible en
bool
pour un argument sans le modifier
(exigence nommée) |
||
|
un
FunctionObject
qui retourne une valeur convertible en
bool
pour deux arguments sans les modifier
(exigence nommée) |
||
|
un
BinaryPredicate
qui établit une relation d'ordre
(exigence nommée) |
||
Conteneur |
|
|
structure de données permettant l'accès aux éléments via des itérateurs
(exigence nommée) |
|
|
conteneur utilisant des itérateurs bidirectionnels
(spécification nommée) |
|
|
(C++11)
|
conteneur utilisant un allocateur
(exigence nommée) |
|
conteneur avec des éléments stockés linéairement
(exigence nommée) |
|
|
(C++17)
|
conteneur dont les éléments sont stockés à des adresses mémoire adjacentes
(exigence nommée) |
|
conteneur qui stocke des éléments en les associant à des clés
(exigence nommée) |
|
|
(C++11)
|
conteneur qui stocke des éléments dans des compartiments en les associant à des clés
(exigence nommée) |
Élément conteneur |
|
|
(C++11)
|
l'élément peut être construit par défaut dans un espace de stockage non initialisé
(exigence nommée) |
|
(C++11)
|
l'élément peut être copié-construit dans un stockage non initialisé
(exigence nommée) |
|
(C++11)
|
l'élément peut être construit par déplacement dans un espace mémoire non initialisé
(exigence nommée) |
|
(C++11)
|
l'élément peut être construit dans un espace de stockage non initialisé
(exigence nommée) |
|
(C++11)
|
l'élément peut être détruit en utilisant un allocateur
(spécification nommée) |
Itérateur |
|
|
concept général pour accéder aux données dans une structure de données
(exigence nommée) |
|
|
itérateur qui peut être utilisé pour lire des données
(exigence nommée) |
|
|
itérateur qui peut être utilisé pour écrire des données
(exigence nommée) |
|
|
itérateur qui peut être utilisé pour lire des données plusieurs fois
(exigence nommée) |
|
|
itérateur qui peut être à la fois incrémenté et décrémenté
(exigence nommée) |
|
|
itérateur qui peut être avancé en temps constant
(exigence nommée) |
|
|
(C++17)
|
itérateur vers des éléments alloués de manière contiguë
(exigence nommée) |
|
(C++20)
|
itérateur pouvant être utilisé lors de l'évaluation d'expressions constantes
(exigence nommée) |
Fonctions d'E/S de flux |
|
|
une fonction d'entrée de flux qui ne saute pas les espaces blancs de début et compte les caractères traités
(exigence nommée) |
|
|
une fonction d'entrée de flux qui ignore les espaces blancs de début
(exigence nommée) |
|
|
une fonction de sortie de flux basique
(exigence nommée) |
|
|
une fonction de sortie de flux qui définit failbit en cas d'erreurs et retourne une référence au flux
(exigence nommée) |
|
Formateurs |
|
|
(C++20)
|
abstrait les opérations de formatage pour un type d'argument de formatage et un type de caractère donnés
(exigence nommée) |
|
(C++20)
|
définit les fonctions utilisées par la
bibliothèque de formatage
(exigence nommée) |
Génération de Nombres Aléatoires |
|
|
(C++11)
|
consomme une séquence d'entiers et produit une séquence de valeurs non signées de 32 bits
(exigence nommée) |
|
(C++11)
|
renvoie des entiers non signés aléatoires uniformément distribués
(exigence nommée) |
|
(C++11)
|
un
UniformRandomBitGenerator
déterministe, défini par la graine
(exigence nommée) |
|
(C++11)
|
un
RandomNumberEngine
qui transforme la sortie d'un autre
RandomNumberEngine
(exigence nommée) |
|
(C++11)
|
renvoie des nombres aléatoires distribués selon une fonction de densité de probabilité mathématique donnée
(exigence nommée) |
Concurrence |
|
|
(C++11)
|
fournit une sémantique de propriété exclusive pour les agents d'exécution (c'est-à-dire les threads)
(exigence nommée) |
|
(C++11)
|
un
BasicLockable
qui prend en charge la tentative d'acquisition de verrou
(exigence nommée) |
|
(C++11)
|
un
Lockable
qui prend en charge l'acquisition temporisée de verrou
(spécification nommée) |
|
(C++14)
|
fournit une sémantique de propriété partagée pour les agents d'exécution (c'est-à-dire les threads)
(exigence nommée) |
|
(C++14)
|
un
SharedLockable
qui prend en charge l'acquisition temporisée de verrou
(spécification nommée) |
|
(C++11)
|
un
Lockable
qui protège contre les courses de données et assure une synchronisation séquentiellement cohérente
(spécification nommée) |
|
(C++11)
|
un
TimedLockable
qui protège contre les accès concurrents aux données et assure une synchronisation séquentiellement cohérente
(spécification nommée) |
|
(C++17)
|
un
Mutex
qui prend en charge la sémantique de propriété partagée
(exigence nommée) |
|
(C++14)
|
un
TimedMutex
qui prend en charge la sémantique de propriété partagée
(exigence nommée) |
Plages |
|
|
(C++20)
|
un
FunctionObject
qui crée un
adaptateur de gamme
à partir d'un
viewable_range
et d'arguments supplémentaires
(exigence nommée) |
|
(C++20)
|
un
FunctionObject
qui prend en charge l'opérateur pipe
(exigence nommée) |
Personnalisation de Vue Multidimensionnelle |
|
|
(C++23)
|
contrôle le mappage des index multidimensionnels dans
mdspan
(exigence nommée) |
|
(C++23)
|
une politique qui respecte
LayoutMapping
les exigences
(exigence nommée) |
|
(C++23)
|
une politique qui contrôle l'accès aux données dans
mdspan
(exigence nommée) |
Autre |
|
|
(C++11)
|
décrit une propriété d'un type
(exigence nommée) |
|
(C++11)
|
décrit une relation entre deux types
(exigence nommée) |
|
(C++11)
|
modifie une propriété d'un type
(exigence nommée) |
|
(C++11)
|
agrège une durée, un point temporel et une fonction pour obtenir le point temporel actuel
(exigence nommée) |
|
(C++11)
|
un
Clock
qui ne lève pas d'exceptions
(exigence nommée) |
|
définit les types et fonctions pour un type de caractère
(exigence nommée) |
|
|
bitset, entier ou énumération
(exigence nommée) |
|
|
un type pour lequel l'initialisation est effectivement équivalente à l'assignation
(exigence nommée) |
|
|
(C++11)
|
définit les types et fonctions utilisés par la
bibliothèque d'expressions régulières
(exigence nommée) |
|
(C++11)
|
un type avec un constructeur constexpr
(exigence nommée) |
|
Cette section est incomplète
Raison : Autre exigence manquante ? |