65/// A class that allows a write lock to optionally, atomically decay to a read lock.
66/**
67 Only taken if there are no other readers nor any writers. If multiple writers attempt to gain the lock, only one will succeed, the choice is undefined. If at least one read lock is held, then any write locks will block until there are no read locks.
132/// Take a shared read lock on the resource, using RAII.
133/**
134 If a writer has acquired the resource, then this will block until no writers have the resource. If multiple writers and readers are waiting for the resource, then the order in which readers and writers acquire the resource is undefined.
161/// Take an exclusive write-lock on the resource, using RAII.
162/**
163 Only taken if there are no other readers nor any writers. If multiple writers attempt to gain the lock, only one will succeed, the choice is undefined. If at least one read lock is held, then any write locks will block until there are no read locks.