Namespaces
Variants

C++ named requirements: EmplaceConstructible (since C++11)

From cppreference.net
C++ named requirements

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

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