Namespaces
Variants

std::experimental:: unique_resource

From cppreference.net
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_resource hält effektiv ein Subobjekt vom Typ RS , das den Ressourcen-Handle enthält oder umschließt, einen Deleter vom Typ D und ein bool -Flag, das anzeigt, ob der Wrapper die Ressource besitzt.
  • Zu Erklärungszwecken wird das Subobjekt vom Typ RS als gespeicherter Ressourcen-Handle bezeichnet, und das gespeicherte (falls R ein Objekttyp ist) oder umschlossene (falls R ein Referenztyp ist) R wird 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

Siehe auch

(C++11)
Intelligenter Zeiger mit eindeutiger Objektbesitz-Semantik
(Klassentemplate)