Namespaces
Variants

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

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
template < class U, class ... CtorArgs >
U * new_object ( CtorArgs && ... ctor_args ) ;
(depuis C++20)

Alloue et construit un objet de type U .

Étant donné que alloc est un std:: pmr :: polymorphic_allocator < T > :

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

est équivalent à

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

Table des matières

Paramètres

ctor_args - les arguments à transmettre au constructeur de U

Valeur de retour

Un pointeur vers l'objet alloué et construit.

Notes

Cette fonction a été introduite pour être utilisée avec l'allocateur pleinement spécialisé std:: pmr :: polymorphic_allocator <> , mais elle peut être utile dans toute spécialisation comme raccourci pour éviter d'avoir à rebinder depuis std:: pmr :: polymorphic_allocator < T > vers std:: pmr :: polymorphic_allocator < U > , et d'avoir à appeler allocate , construct , et deallocate individuellement.

Puisque U n'est pas déduit, il doit être fourni comme argument de modèle lors de l'appel de cette fonction.

Exceptions

Peut lever toutes les exceptions levées par l'appel à allocate_object ou le constructeur de U .

Voir aussi

alloue de la mémoire brute alignée à partir de la ressource sous-jacente
(fonction membre publique)
alloue de la mémoire brute adaptée pour un objet ou un tableau
(fonction membre publique)
alloue de la mémoire
(fonction membre publique)
[static]
alloue un stockage non initialisé en utilisant l'allocateur
(fonction membre publique statique de std::allocator_traits<Alloc> )
alloue de la mémoire
(fonction membre publique de std::pmr::memory_resource )