Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: EmplaceConstructible (seit C++11)

Von cppreference.com
 
 
C++ benannte Anforderungen
 

Gibt an, dass ein Objekt des Typs aus einer gegebenen Menge von Argumenten in uninitialisiertem Speicher mit einem gegebenen Allokator konstruiert werden kann.

[bearbeiten] 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 von dem Container vorbereitete Zeiger vom Typ T*
args null oder mehr Argumente

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

der folgende Ausdruck wohlgeformt ist

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

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

[bearbeiten] Hinweise

Obwohl bis C++23 gefordert war, dass ein angepasster construct beim Konstruieren von Elementen von std::basic_string verwendet wird, haben alle Implementierungen nur den Standardmechanismus genutzt. Die Anforderung wurde durch P1072R10 korrigiert, um die bestehende Praxis anzupassen.

[bearbeiten] Siehe auch

CopyInsertable
MoveInsertable