std::experimental:: unique_resource
|
Definiert in Header
<experimental/scope>
|
||
|
template
<
class
R,
class
D
>
class unique_resource ; |
(Library Fundamentals TS v3) | |
unique_resource
ist ein universeller RAII-Wrapper für Ressourcen-Handles, der eine Ressource über einen Handle besitzt und verwaltet und diese Ressource freigibt, wenn die
unique_resource
zerstört wird.
Die Ressource wird unter Verwendung des Deleter vom Typ
D
freigegeben, wenn eines der folgenden Ereignisse eintritt:
-
das verwaltende
unique_resource-Objekt wird zerstört, -
das verwaltende
unique_resource-Objekt wird von einer anderen Ressource zugewiesen via operator= oder reset() .
Lassen Sie den Typ
RS
sein
R
falls
R
ein Objekttyp ist, oder
std::
reference_wrapper
<
std::
remove_reference_t
<
R
>>
andernfalls:
-
unique_resourcehält effektiv ein Subobjekt vom TypRS, das den Ressourcen-Handle enthält oder umschließt, einen Deleter vom TypDund ein bool -Flag, das anzeigt, ob der Wrapper die Ressource besitzt. -
Zu Erklärungszwecken wird das Subobjekt vom Typ
RSals gespeicherter Ressourcen-Handle bezeichnet, und das gespeicherte (fallsRein Objekttyp ist) oder umschlossene (fallsRein Referenztyp ist)Rwird als zugrundeliegender Ressourcen-Handle bezeichnet. Diese beiden Begriffe werden vom LFTS nicht verwendet.
Inhaltsverzeichnis |
Template-Parameter
| R | - | Ressourcen-Handle-Typ |
| D | - | Deleter-Typ |
| Typanforderungen | ||
-
R
muss ein Objekttyp oder ein Lvalue-Referenz auf einen Objekttyp sein. Sei
UnrefR
std::
remove_reference_t
<
R
>
,
UnrefR
muss
MoveConstructible
sein, und falls
UnrefR
nicht
CopyConstructible
ist, muss
std::
is_nothrow_move_constructible_v
<
UnrefR
>
true
sein.
|
||
-
D
muss ein
Destructible
und
MoveConstructible
FunctionObject
-Typ sein, und falls
D
nicht
CopyConstructible
ist, muss
std::
is_nothrow_move_constructible_v
<
D
>
true
sein. Gegeben ein Lvalue
d
vom Typ
D
und ein Lvalue
r
vom Typ
UnrefR
, muss der Ausdruck
d
(
r
)
wohlgeformt sein.
|
||
Memberfunktionen
konstruiert ein neues
unique_resource
(öffentliche Elementfunktion) |
|
|
entsorgt die verwaltete Ressource, falls vorhanden
(öffentliche Elementfunktion) |
|
weist ein
unique_resource
zu
(öffentliche Elementfunktion) |
|
Modifikatoren |
|
|
gibt die Eigentümerschaft frei
(öffentliche Elementfunktion) |
|
|
entsorgt oder ersetzt die verwaltete Ressource
(öffentliche Elementfunktion) |
|
Beobachter |
|
|
greift auf das zugrundeliegende Ressourcen-Handle zu
(öffentliche Elementfunktion) |
|
|
greift auf den Deleter zu, der zur Entsorgung der verwalteten Ressource verwendet wird
(öffentliche Elementfunktion) |
|
|
greift auf das Pointee zu, falls das Ressourcen-Handle ein Zeiger ist
(öffentliche Elementfunktion) |
|
Nicht-Member-Funktionen
erstellt eine
unique_resource
, prüft ungültigen Wert
(Funktions-Template) |
Deduktionshilfen
Hinweise
Ressourcen-Handle-Typen, die
NullablePointer
erfüllen, können ebenfalls von
std::unique_ptr
verwaltet werden. Im Gegensatz zu
unique_ptr
erfordert
unique_resource
kein
NullablePointer
.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++11)
|
Intelligenter Zeiger mit eindeutiger Objektbesitz-Semantik
(Klassentemplate) |