Namespaces
Variants

std::experimental:: unique_resource

From cppreference.net
Défini dans l'en-tête <experimental/scope>
template < class R, class D >
class unique_resource ;
(library fundamentals TS v3)

unique_resource est un wrapper RAII universel pour les gestionnaires de ressources qui possède et gère une ressource via un gestionnaire et libère cette ressource lorsque le unique_resource est détruit.

La ressource est libérée en utilisant le suppresseur de type D lorsque l'une des situations suivantes se produit :

  • l'objet gérant unique_resource est détruit,
  • l'objet gérant unique_resource est assigné depuis une autre ressource via operator= ou reset() .

Soit le type RS défini comme R si R est un type objet, ou comme std:: reference_wrapper < std:: remove_reference_t < R >> sinon :

  • unique_resource détient effectivement un sous-objet de type RS qui est ou encapsule le gestionnaire de ressource, un suppresseur de type D et un indicateur bool indiquant si le wrapper possède la ressource.
  • À des fins explicatives, le sous-objet de type RS est appelé gestionnaire de ressource stocké , et le R stocké (si R est un type objet) ou encapsulé (si R est un type référence) est appelé gestionnaire de ressource sous-jacent . Ces deux termes ne sont pas utilisés par le LFTS.

Table des matières

Paramètres du modèle

R - type de gestionnaire de ressource
D - type de suppresseur
Exigences de type
-
R doit être un type d'objet ou une référence lvalue à un type d'objet. Soit UnrefR le type std:: remove_reference_t < R > , UnrefR doit être MoveConstructible , et si UnrefR n'est pas CopyConstructible , std:: is_nothrow_move_constructible_v < UnrefR > doit être true .
-
D doit être un type Destructible et MoveConstructible FunctionObject , et si D n'est pas CopyConstructible , std:: is_nothrow_move_constructible_v < D > doit être true . Étant donné une lvalue d de type D et une lvalue r de type UnrefR , l'expression d ( r ) doit être bien formée.

Fonctions membres

construit un nouveau unique_resource
(fonction membre publique)
libère la ressource gérée si elle est présente
(fonction membre publique)
assigne une unique_resource
(fonction membre publique)
Modificateurs
libère la propriété
(fonction membre publique)
libère ou remplace la ressource gérée
(fonction membre publique)
Observateurs
accède au handle de ressource sous-jacent
(fonction membre publique)
accède au suppresseur utilisé pour libérer la ressource gérée
(fonction membre publique)
accède à la valeur pointée si le handle de ressource est un pointeur
(fonction membre publique)

Fonctions non membres

crée une unique_resource , en vérifiant la valeur invalide
(modèle de fonction)

Guides de déduction

Notes

Les types de gestionnaires de ressources satisfaisant NullablePointer peuvent également être gérés par std::unique_ptr . Contrairement à unique_ptr , unique_resource n'exige pas NullablePointer .

Exemple

Voir aussi

(C++11)
pointeur intelligent avec sémantique de propriété exclusive d'objet
(modèle de classe)