std::experimental::unique_resource<R, D>::reset

来自cppreference.com
void reset() noexcept;
(1) (库基础 TS v3)
template< class RR >
void reset( RR&& r );
(2) (库基础 TS v3)
1)unique_resource 占有资源,则通过以底层资源句柄调用删除器来释放它。调用后 unique_resource 不占有资源。
2) 通过调用 (1) 然后若 std::is_nothrow_assignable_v<RS, RR>true 则以 std::forward<RR>(r),否则以 std::as_const(r) 赋值存储的资源句柄来替换资源,其中 RS 是存储的资源句柄的类型。调用后 unique_resource 占有资源。
若存储的资源句柄的复制赋值抛出了异常,则调用 del_(r),其中 del 是删除器对象。
此重载只有在选择的赋值存储的资源句柄的赋值表达式为良构时才会参与重载决议。
del_(r) 非良构,则程序非良构。
del_(r) 导致未定义行为或抛出异常,则行为未定义。

参数

r - 要管理的新资源的资源句柄

返回值

(无)

异常

2) 任何赋值存储的资源句柄时抛出的异常。

注解

该机制确保无资源泄漏。

示例

参阅

替换被管理对象
(std::unique_ptr<T,Deleter> 的公开成员函数)