An object of type unique_lock
controls the ownership of a lockable
object within a scope.
Ownership of the lockable object may be acquired at
construction or after construction, and may be transferred, after
acquisition, to another unique_lock
Objects of type unique_lock
copyable but are movable.
The behavior of a program is undefined if the contained pointer
is not null and the lockable object pointed
to by pm
does not exist for the entire remaining
) of the unique_lock