Namespaces
Variants

std:: polymorphic

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)
Défini dans l'en-tête <memory>
template < class T, class Allocator = std:: allocator < T > >
class polymorphic ;
(1) (depuis C++26)
namespace pmr {

template < class T >
using polymorphic =
std :: polymorphic < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (depuis C++26)
1) std::polymorphic est un wrapper contenant un objet alloué dynamiquement de types potentiellement différents avec une sémantique de type valeur.
2) std::pmr::polymorphic est un modèle d'alias qui utilise un polymorphic allocator .

Un objet std::polymorphic gère la durée de vie d'un objet possédé. L'objet possédé est de type T ou de tout type (publiquement et sans ambiguïté) dérivé de T . Un objet std::polymorphic ne peut n'avoir aucun objet possédé qu'après avoir été déplacé, auquel cas il est sans valeur .

Chaque objet de type std::polymorphic<T, Allocator> utilise un objet de type Allocator pour allouer et libérer le stockage pour l'objet possédé selon les besoins.

Si un programme déclare une spécialisation explicite ou partielle de std::polymorphic , le comportement est indéfini.

Table des matières

Paramètres du modèle

T - le type de l'objet possédé
Allocator - le type de l'allocateur associé
Exigences de type
-
T peut être un type incomplet .
-
Si T est l'un des types suivants, le programme est mal formé :
-
Si Allocator ne satisfait pas aux exigences de Allocator , le programme est mal formé.
-
Si std:: allocator_traits < Allocator > :: value_type n'est pas du même type que T , le programme est mal formé.

Types imbriqués

Type Définition
value_type T
allocator_type Allocator
pointer typename std:: allocator_traits < Allocator > :: pointer
const_pointer typename std:: allocator_traits < Allocator > :: const_pointer

Membres de données

Membre Description
Allocator alloc l'allocateur associé
( objet membre d'exposition uniquement* )

Fonctions membres

construit l'objet polymorphic
(fonction membre publique)
détruit la valeur possédée, s'il y en a une
(fonction membre publique)
assigne le contenu
(fonction membre publique)
Observateurs
accède à la valeur possédée
(fonction membre publique)
vérifie si le polymorphic est sans valeur
(fonction membre publique)
retourne l'allocateur associé
(fonction membre publique)
Modificateurs
échange le contenu
(fonction membre publique)

Fonctions non membres

spécialise l'algorithme std::swap
(modèle de fonction)

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_polymorphic 202502L (C++26) std::polymorphic

Exemple

Voir aussi

(C++26)
un wrapper contenant un objet alloué dynamiquement avec une sémantique de type valeur
(modèle de classe)