Namensräume
Varianten
Aktionen

std::allocator_traits<Alloc>::construct

Von cppreference.com
 
 
Speicherverwaltungsbibliothek
(nur Exposition*)
Algorithmen für uninitialisierten Speicher
(C++17)
(C++17)
(C++17)
Beschränkte uninitialisierte
Speicher-Algorithmen
C-Bibliothek

Allocatoren
Speicherressourcen
Unterstützung für Garbage Collection
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
Uninitialisierter Speicher
Explizites Lebenszeitmanagement
 
 
Definiert in Header <memory>
template< class T, class... Args >
static void construct( Alloc& a, T* p, Args&&... args );
(seit C++11)
(constexpr seit C++20)

Konstruiert, falls möglich, ein Objekt vom Typ T im zugewiesenen, uninitialisierten Speicher, auf den durch p gezeigt wird, indem a.construct(p, std::forward<Args>(args)...) aufgerufen wird.

Wenn das Obige nicht möglich ist (z. B. wenn Alloc nicht die Member-Funktion construct() hat), wird stattdessen Folgendes aufgerufen:

::new (static_cast<void*>(p)) T(std::forward<Args>(args)...)

(bis C++20)

std::construct_at(p, std::forward<Args>(args)...)

(seit C++20)

Inhalt

[bearbeiten] Parameter

a - Der für die Konstruktion zu verwendende Allokator
p - Zeiger auf den uninitialisierten Speicher, auf dem ein T-Objekt konstruiert werden soll
args... - Die Konstruktorargumente, die an a.construct() oder an Placement-new(bis C++20)std::construct_at()(seit C++20) übergeben werden sollen

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Anmerkungen

Diese Funktion wird von den Standardbibliothekscontainern beim Einfügen, Kopieren oder Verschieben von Elementen verwendet.

Da diese Funktion den automatischen Rückgriff auf Placement new bereitstellt, ist die Member-Funktion construct() seit C++11 eine optionale Allocator-Anforderung.

[bearbeiten] Siehe auch

Allokationsfunktionen
(Funktion) [bearbeiten]
(bis C++20)
konstruiert ein Objekt im allokierten Speicher
(öffentliche Memberfunktion von std::allocator<T>) [bearbeiten]
erstellt ein Objekt an einer gegebenen Adresse
(Funktions-Template) [edit]