Namespaces
Variants

Named Requirements

From cppreference.net
C++ named requirements

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 .

Table des matières

Basic

spécifie qu'un objet du type peut être construit par défaut
(exigence nommée)
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)
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)
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)
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)
un LegacyIterator qui déréférence vers un type Swappable
(exigence nommée)
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)
conteneur utilisant un allocateur
(exigence nommée)
conteneur avec des éléments stockés linéairement
(exigence nommée)
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)
conteneur qui stocke des éléments dans des compartiments en les associant à des clés
(exigence nommée)
Élément conteneur
l'élément peut être construit par défaut dans un espace de stockage non initialisé
(exigence nommée)
l'élément peut être copié-construit dans un stockage non initialisé
(exigence nommée)
l'élément peut être construit par déplacement dans un espace mémoire non initialisé
(exigence nommée)
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)
itérateur vers des éléments alloués de manière contiguë
(exigence nommée)
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

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

consomme une séquence d'entiers et produit une séquence de valeurs non signées de 32 bits
(exigence nommée)
renvoie des entiers non signés aléatoires uniformément distribués
(exigence nommée)
un UniformRandomBitGenerator déterministe, défini par la graine
(exigence nommée)
un RandomNumberEngine qui transforme la sortie d'un autre RandomNumberEngine
(exigence nommée)
renvoie des nombres aléatoires distribués selon une fonction de densité de probabilité mathématique donnée
(exigence nommée)

Concurrence

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)
un Lockable qui prend en charge l'acquisition temporisée de verrou
(spécification nommée)
fournit une sémantique de propriété partagée pour les agents d'exécution (c'est-à-dire les threads)
(exigence nommée)
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)
un Mutex qui prend en charge la sémantique de propriété partagée
(exigence nommée)
un TimedMutex qui prend en charge la sémantique de propriété partagée
(exigence nommée)

Plages

un FunctionObject qui crée un adaptateur de gamme à partir d'un viewable_range et d'arguments supplémentaires
(exigence nommée)
un FunctionObject qui prend en charge l'opérateur pipe
(exigence nommée)

Personnalisation de Vue Multidimensionnelle

contrôle le mappage des index multidimensionnels dans mdspan
(exigence nommée)
une politique qui respecte LayoutMapping les exigences
(exigence nommée)
une politique qui contrôle l'accès aux données dans mdspan
(exigence nommée)

Autre

décrit une propriété d'un type
(exigence nommée)
décrit une relation entre deux types
(exigence nommée)
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)
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)
définit les types et fonctions utilisés par la bibliothèque d'expressions régulières
(exigence nommée)
un type avec un constructeur constexpr
(exigence nommée)