Namespaces
Variants

std:: indirect

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 indirect ;
(1) (depuis C++26)
namespace pmr {

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

}
(2) (depuis C++26)
1) std::indirect est un wrapper contenant un objet alloué dynamiquement avec une sémantique de type valeur.
2) std::pmr::indirect est un alias de modèle qui utilise un allocateur polymorphe .

Un objet std::indirect gère la durée de vie d'un objet possédé. Un objet std::indirect 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::indirect<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::indirect , 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
pointer p un pointeur vers la valeur possédée
( objet membre d'exposition uniquement* )
Allocator alloc l'allocateur associé
( objet membre d'exposition uniquement* )

Fonctions membres

construit l'objet indirect
(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 l' indirect est sans valeur
(fonction membre publique)
retourne l'allocateur associé
(fonction membre publique)
Modificateurs
échange le contenu
(fonction membre publique)

Fonctions non membres

(C++26) (C++26)
compare les objets indirect
(modèle de fonction)
spécialise l'algorithme std::swap
(modèle de fonction)

Classes d'assistance

prise en charge du hachage pour std::indirect
(spécialisation de modèle de classe)

Guides de déduction

Notes

Macro de test de fonctionnalité Valeur Norme Fonctionnalité
__cpp_lib_indirect 202502L (C++26) std::indirect

Exemple

Voir aussi

un wrapper polymorphique contenant un objet alloué dynamiquement avec une sémantique de valeur
(modèle de classe)
(C++11)
pointeur intelligent avec sémantique de propriété exclusive d'objet
(modèle de classe)