C++ named requirements: EmplaceConstructible (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spécifie qu'un objet du type peut être construit à partir d'un ensemble d'arguments donné dans un stockage non initialisé par un allocateur donné.
Exigences
Le type
T
est
EmplaceConstructible
dans le
Container
X
(dont le
value_type
est identique à
T
) à partir des arguments
args
si, étant donné
A
|
un type d'allocateur |
m
|
une lvalue de type
A
|
p
|
le pointeur de type
T*
préparé par le conteneur
|
args
|
zéro ou plusieurs arguments |
où
X::allocator_type
est identique à
std::
allocator_traits
<
A
>
::
rebind_alloc
<
T
>
,
l'expression suivante est bien formée :
std::allocator_traits<A>::construct(m, p, args);
Si
X
n'est pas sensible à l'allocateur ou est une spécialisation de
std::basic_string
, le terme est défini comme si
A
était
std::allocator<T>
, sauf qu'aucun objet allocateur n'a besoin d'être créé, et les spécialisations définies par l'utilisateur de
std::allocator
ne sont pas instanciées.
Notes
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.
Voir aussi
| CopyInsertable | |
| MoveInsertable |