Namespaces
Variants

std::out_ptr_t<Smart,Pointer,Args...>:: out_ptr_t

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)
explicit out_ptr_t ( Smart & sp, Args... args ) ;
(1) (depuis C++23)
out_ptr_t ( const out_ptr_t & ) = delete ;
(2) (depuis C++23)
1) Crée un out_ptr_t . Adapte sp comme s'il le liait au membre Smart & , capture chaque argument t dans args... comme s'il initialisait le membre correspondant de type T dans Args... avec std:: forward < T > ( t ) , puis initialise par défaut le Pointer stocké.
Appelle ensuite sp. reset ( ) si l'expression est bien formée ; sinon, appelle sp = Smart ( ) si std:: is_default_constructible_v < Smart > est true . Le programme est mal formé si les deux opérations de réinitialisation sont mal formées.
2) Le constructeur de copie est explicitement supprimé. out_ptr_t n'est ni copiable ni déplaçable.

Table des matières

Paramètres

sp - l'objet (généralement un pointeur intelligent) à adapter
args... - les arguments utilisés pour la réinitialisation à capturer

Valeur de retour

(aucun)

Exceptions

Peut lever des exceptions définies par l'implémentation.

Notes

Après la construction, l'objet Pointer ou void * pointé par la valeur de retour de l'une ou l'autre fonction de conversion est égal à nullptr .

Chaque argument dans args... est déplacé dans le out_ptr_t créé s'il est d'un type objet, ou transféré dans le out_ptr_t créé tel quel s'il est d'un type référence.

Le constructeur de out_ptr_t est autorisé à lever des exceptions. Par exemple, lorsque sp est un std::shared_ptr , l'allocation pour le nouveau bloc de contrôle peut être effectuée dans le constructeur plutôt que dans le destructeur.

Exemple