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 object
.Objects of type 
unique_lock are not
copyable but are movable
.The behavior of a program is undefined if the contained pointer
pm is not null and the lockable object pointed
to by 
pm does not exist for the entire remaining
lifetime (
[basic.life]) of the 
unique_lock object
.