Namespaces
Variants

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

From cppreference.net
C++ named requirements

Spezifiziert, dass ein Objekt des Typs aus einer gegebenen Argumentenmenge in nicht initialisiertem Speicher durch einen gegebenen Allokator konstruiert werden kann.

Anforderungen

Der Typ T ist EmplaceConstructible in den Container X (dessen value_type identisch mit T ist) aus den Argumenten args , wenn gegeben

A ein Allokator-Typ
m ein Lvalue vom Typ A
p der Zeiger vom Typ T* , bereitgestellt vom Container
args null oder mehr Argumente

wobei X::allocator_type identisch ist mit std:: allocator_traits < A > :: rebind_alloc < T > ,

der folgende Ausdruck ist wohlgeformt:

std::allocator_traits<A>::construct(m, p, args);

Wenn X nicht allocator-aware ist oder eine std::basic_string -Spezialisierung darstellt, wird der Begriff so definiert, als ob A ein std::allocator<T> wäre, mit der Ausnahme, dass kein Allokator-Objekt erstellt werden muss und benutzerdefinierte Spezialisierungen von std::allocator nicht instanziiert werden.

Hinweise

Obwohl es bis C++23 erforderlich war, dass benutzerdefinierte construct verwendet werden, wenn Elemente von std::basic_string konstruiert werden, haben alle Implementierungen nur den Standardmechanismus verwendet. Die Anforderung wurde durch P1072R10 korrigiert, um der bestehenden Praxis zu entsprechen.

Siehe auch

CopyInsertable
MoveInsertable