std::experimental::unique_resource<R, D>:: unique_resource
|
unique_resource
(
)
;
|
(1) | (Bibliothek Fundamentals TS v3) |
|
template
<
class
RR,
class
DD
>
unique_resource ( RR && r, DD && d ) noexcept ( /*siehe unten*/ ) |
(2) | (Bibliothek Fundamentals TS v3) |
|
unique_resource
(
unique_resource
&&
other
)
;
|
(3) | (Bibliothek Fundamentals TS v3) |
Folgende Elemente dienen Erklärungszwecken:
-
RSist der Typ des gespeicherten Ressourcen-Handles. - Der Ausdruck res_ verweist auf das zugrundeliegende Ressourcen-Handle.
-
del_verweist auf das Deleter-Objekt.
unique_resource
besitzt die Ressource nicht.
Danach wird der Deleter mit std:: forward < DD > ( d ) initialisiert, falls std:: is_nothrow_constructible_v < D, DD > true ist, andernfalls mit d . Wenn die Initialisierung des Deleters eine Exception wirft, wird d ( res_ ) aufgerufen.
Das konstruierte
unique_resource
besitzt die Ressource.
std::move
falls
std::
is_nothrow_move_constructible_v
<
RS
>
den Wert
true
hat. Wenn die Initialisierung des gespeicherten Ressourcen-Handles eine Exception wirft, wird
other
nicht modifiziert.
Danach wird der Deleter mit dem von other initialisiert, unter Verwendung von
std::move
falls
std::
is_nothrow_move_constructible_v
<
D
>
den Wert
true
hat. Wenn die Initialisierung des Deleters eine Exception wirft und
std::
is_nothrow_move_constructible_v
<
RS
>
den Wert
true
hat und
other
die Ressource besitzt, ruft der Deleter von
other
mit
res_
auf, um die Ressource freizugeben, und ruft dann
other.
release
(
)
auf.
Nach der Konstruktion besitzt das konstruierte
unique_resource
seine Ressource genau dann, wenn
other
die Ressource vor der Konstruktion besaß, und
other
wird auf "besitzt die Ressource nicht" gesetzt.
Inhaltsverzeichnis |
Parameter
| r | - | ein Ressourcen-Handle |
| d | - | ein Deleter zur Freigabe der Ressource |
| other | - |
ein weiteres
unique_resource
zur Übernahme des Besitzes
|
Ausnahmen
Jede Ausnahme, die während der Initialisierung des gespeicherten Ressourcen-Handles oder des Deleter ausgelöst wird.
std::
is_nothrow_constructible_v
<
RS, RR
>
||
std::
is_nothrow_constructible_v
<
RS, RR
&
>
)
&&
(
std::
is_nothrow_constructible_v
<
D, DD
>
||
std::
is_nothrow_constructible_v
<
D, DD
&
>
std::
is_nothrow_move_constructible_v
<
R1
>
&&
std::
is_nothrow_move_constructible_v
<
D
>
Hinweise
Der Mechanismus dieser Konstruktoren gewährleistet, dass keine Ressourcen verloren gehen.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
Konstruiert einen neuen
unique_ptr
(Öffentliche Mitgliedsfunktion von
std::unique_ptr<T,Deleter>
)
|