std::allocator_traits<Alloc>::construct
Von cppreference.com
< cpp | memory | allocator traits
| 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) | |
| (bis C++20) |
konstruiert ein Objekt im allokierten Speicher (öffentliche Memberfunktion von std::allocator<T>) |
| (C++20) |
erstellt ein Objekt an einer gegebenen Adresse (Funktions-Template) |