Namensräume
Varianten
Aktionen

std::pmr::polymorphic_allocator<T>::new_object

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
 
 
template< class U, class... CtorArgs >
U* new_object( CtorArgs&&... ctor_args );
(seit C++20)

Allokiert und konstruiert ein Objekt vom Typ U.

Gegeben alloc ist ein std::pmr::polymorphic_allocator<T>

U* p = alloc.new_object<U>(std::forward<CtorArgs>(ctor_args)...);

ist äquivalent zu

U* p = alloc.allocate_object<U>();
try
{
    alloc.construct(p, std::forward<CtorArgs>(ctor_args)...);
}
catch (...)
{
    alloc.deallocate_object(p);
    throw;
}

Inhalt

[bearbeiten] Parameter

ctor_args - die Argumente, die an den Konstruktor von U weitergeleitet werden

[bearbeiten] Rückgabewert

Ein Zeiger auf das allokierte und konstruierte Objekt.

[bearbeiten] Hinweise

Diese Funktion wurde für die Verwendung mit dem vollständig spezialisierten Allokator std::pmr::polymorphic_allocator<> eingeführt, kann aber in jeder Spezialisierung als Abkürzung nützlich sein, um eine Neubindung von std::pmr::polymorphic_allocator<T> an std::pmr::polymorphic_allocator<U> und den separaten Aufruf von allocate, construct und deallocate zu vermeiden.

Da U nicht abgeleitet wird, muss es als Template-Argument beim Aufruf dieser Funktion angegeben werden.

[bearbeiten] Ausnahmen

Kann jede Ausnahme auslösen, die durch den Aufruf von allocate_object oder den Konstruktor von U ausgelöst wird.

[bearbeiten] Siehe auch

allokiert rohen, ausgerichteten Speicher aus der zugrundeliegenden Ressource
(public member function) [edit]
allokiert rohen Speicher, der für ein Objekt oder ein Array geeignet ist
(public member function) [edit]
alloziiert Speicher
(public member function) [edit]
[static]
alloziiert uninitialisierten Speicher unter Verwendung des Allokators
(public static member function of std::allocator_traits<Alloc>) [bearbeiten]
alloziert Speicher
(public member function of std::pmr::memory_resource) [bearbeiten]