C++ named requirements: Erasable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spécifie qu'un objet du type peut être détruit par un Allocator donné.
Table des matières |
Exigences
Étant donné les types, valeurs et expressions suivants :
| Type | Définition |
T
|
un type d'objet |
A
|
un type d'allocateur |
X
|
un type de conteneur satisfaisant toutes les conditions suivantes :
|
| Valeur | Définition |
| m |
une lvalue de type
A
|
| p |
un pointeur de type
T*
|
Si l'expression
std::
allocator_traits
<
A
>
::
destroy
(
m, p
)
est bien formée,
T
est
Effaçable
de
X
.
Notes
Tous les conteneurs de la bibliothèque standard exigent que leurs types de valeur satisfassent Erasable .
|
Avec l'allocateur par défaut, cette exigence équivaut à la validité de p - > ~T ( ) , qui accepte les types de classe avec des destructeurs accessibles et tous les types scalaires, mais rejette les types tableau, les types fonction, les types référence et void . |
(jusqu'à C++20) |
|
Avec l'allocateur par défaut, cette exigence équivaut à la validité de std:: destroy_at ( p ) , qui accepte les types de classe avec des destructeurs accessibles et tous les types scalaires, ainsi que leurs tableaux. |
(depuis C++20) |
Bien qu'il soit requis qu'un destructeur personnalisé
destroy
soit utilisé lors de la destruction des éléments de
std::basic_string
jusqu'au C++23, toutes les implémentations n'ont utilisé que le mécanisme par défaut. Cette exigence est corrigée par
P1072R10
pour correspondre à la pratique existante.
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é |
|---|---|---|---|
| N3346 | C++11 |
aucune exigence n'était spécifiée pour déterminer si un type
dont les objets peuvent être détruits à l'aide d'allocateurs |
exigence ajoutée |
Voir aussi
| CopyInsertable | |
| MoveInsertable | |
| EmplaceConstructible | |
| Destructible |