cpp/thread/unique lock/unique lock

Constructs a, optionally locking the supplied mutex.

@1@ Constructs a with no associated mutex. @2@ Move constructor. Initializes the with the contents of. Leaves with no associated mutex. @3-8@ Constructs a with  as the associated mutex. Additionally:
 * @3@ Locks the associated mutex by calling.
 * @4@ Does not lock the associated mutex.
 * @5@ Tries to lock the associated mutex without blocking by calling . The behavior is undefined if does not satisfy.
 * @6@ Assumes the calling thread already holds a non-shared lock (i.e., a lock acquired by, , , or ) on . The behavior is undefined if not so.
 * @7@ Tries to lock the associated mutex by calling . Blocks until specified has elapsed or the lock is acquired, whichever comes first. May block for longer than . The behavior is undefined if  does not satisfy.
 * @8@ Tries to lock the associated mutex by calling . Blocks until specified has been reached or the lock is acquired, whichever comes first. May block for longer than until  has been reached. The behavior is undefined if  does not satisfy.