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
Objects of type
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
) of the shared_lock