std::experimental:: unique_resource
|
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_resourceest détruit, -
l'objet gérant
unique_resourceest 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_resourcedétient effectivement un sous-objet de typeRSqui est ou encapsule le gestionnaire de ressource, un suppresseur de typeDet un indicateur bool indiquant si le wrapper possède la ressource. -
À des fins explicatives, le sous-objet de type
RSest appelé gestionnaire de ressource stocké , et leRstocké (siRest un type objet) ou encapsulé (siRest 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
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++11)
|
pointeur intelligent avec sémantique de propriété exclusive d'objet
(modèle de classe) |