An object of type
shared_lock controls the shared ownership of a
lockable object within a scope
. Shared ownership of the lockable object may be
acquired at construction or after construction, and may be transferred, after
acquisition, to another
shared_lock object
. Objects of type
shared_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
shared_lock object
.