C++ named requirements: DefaultInsertable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spécifie qu'un objet du type peut être construit par défaut in-situ par un allocateur 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
>
::
construct
(
m, p
)
est bien formée,
T
est
DefaultInsertable
dans
X
.
Notes
Par défaut, cela va initialiser par valeur l'objet, comme par :: new ( ( void * ) p ) T ( ) (jusqu'à C++20) std:: construct_at ( p ) (depuis C++20) .
Si l'initialisation par défaut est indésirable, par exemple si l'objet est de type non-classe et que la mise à zéro n'est pas nécessaire, elle peut être évitée en fournissant un
personnalisé
Allocator::construct
.
Bien qu'il soit requis qu'un
construct
personnalisé soit utilisé lors de la construction 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 | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| N3346 | C++11 |
les exigences
CopyInsertable
et
MoveInsertable
sont présentes, mais DefaultInsertable manquait |
ajout de l'exigence |
Voir aussi
| DefaultConstructible | |
| CopyInsertable | |
| MoveInsertable | |
| EmplaceConstructible | |
| Erasable |