C++ named requirements: EmplaceConstructible (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |