std::experimental::unique_resource
From cppreference.com
< cpp | experimental
|
Defined in header
<experimental/scope>
|
||
|
template
<
class R, class D >
class unique_resource; |
(library fundamentals TS v3) | |
unique_resource is universal RAII wrapper for resource handles that owns and manages a resource through a handle and disposes of that resource when the unique_resource is destroyed.
The resource is disposed of using the deleter of type D when either of the following happens:
- the managing
unique_resourceobject is destroyed, - the managing
unique_resourceobject is assigned from another resource via operator= or reset().
Let type RS be R if R is an object type, or
std::reference_wrapper
<
std::remove_reference_t
<R>>
-
unique_resourceeffectively holds a subobject of typeRSwhich is or wraps the resource handle, a deleter of typeDand a bool - For explanatory purpose, the subobject of type
RSis called stored resource handle, and the stored (ifRis an object type) or wrapped (ifRis a reference type)Ris called underlying resource handle
Template parameters
| R | - | resource handle type |
| D | - | deleter type |
| Type requirements | ||
-
R shall be an object type or an lvalue reference to an object type. Let UnrefR be
std::remove_reference_t<R>
, UnrefR shall be MoveConstructible, and if UnrefR is not CopyConstructible,
std::is_nothrow_move_constructible_v<UnrefR>
shall be true
|
||
-
D shall be a Destructible and MoveConstructible
FunctionObject type, and if D is not CopyConstructible,
std::is_nothrow_move_constructible_v<D>
shall be true. Given an lvalue d of type D and an lvalue r of type UnrefR, the expression d(r)
|
||
Member functions
constructs a new unique_resource (public member function) |
|
| disposes the managed resource if such is present (public member function) |
|
assigns a unique_resource (public member function) |
|
Modifiers | |
| releases the ownership (public member function) |
|
| disposes or replaces the managed resource (public member function) |
|
Observers | |
| accesses the underlying resource handle (public member function) |
|
| accesses the deleter used for disposing of the managed resource (public member function) |
|
| accesses the pointee if the resource handle is a pointer (public member function) |
|
Non-member functions
creates a unique_resource, checking invalid value (function template) |
Deduction guides
Notes
Resource handle types satisfying NullablePointer can also be managed by std::unique_ptr. Unlike unique_ptr, unique_resource does not require NullablePointer
Example
| This section is incomplete Reason: no example |
See also
|
(C++11)
|
smart pointer with unique object ownership semantics (class template) |