cpp/experimental/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 is destroyed.

The resource is disposed of using the deleter of type when either of the following happens:
 * the managing object is destroyed
 * the managing object is assigned from another resource via  or reset.

Let type be  if  is an object type, or  otherwise:
 * effectively holds a subobject of type which is or wraps the resource handle, a deleter of type  and a  flag indicating whether the wrapper is owning the resource.
 * For explanatory purpose, the subobject of type is called stored resource handle, and the stored (if  is an object type) or wrapped (if  is a reference type)  is called underlying resource handle. These two terms are not used by the LFTS.