Effects: As if by pm->lock().
Postconditions: owns == true
Throws: Any exception thrown by pm->lock(). system_error when an exception is required ([thread.req.exception]).
Requires: The supplied Mutex shall meet the Lockable requirements ([thread.req.lockable.req]).
Effects: As if by pm->try_lock().
Returns: The value returned by the call to try_lock().
Postconditions: owns == res, where res is the value returned by the call to try_lock().
Throws: Any exception thrown by pm->try_lock(). system_error when an exception is required ([thread.req.exception]).
template <class Clock, class Duration>
bool try_lock_until(const chrono::time_point<Clock, Duration>& abs_time);
Requires: The supplied Mutex type shall meet the TimedLockable requirements ([thread.req.lockable.timed]).
Effects: As if by pm->try_lock_until(abs_time).
Returns: The value returned by the call to try_lock_until(abs_time).
Postconditions: owns == res, where res is the value returned by the call to try_lock_until(abs_time).
Throws: Any exception thrown by pm->try_lock_until(). system_error when an exception is required ([thread.req.exception]).
template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& rel_time);
Requires: The supplied Mutex type shall meet the TimedLockable requirements ([thread.req.lockable.timed]).
Effects: As if by pm->try_lock_for(rel_time).
Returns: The value returned by the call to try_lock_until(rel_time).
Postconditions: owns == res, where res is the value returned by the call to try_lock_for(rel_time).
Throws: Any exception thrown by pm->try_lock_for(). system_error when an exception is required ([thread.req.exception]).
Effects: As if by pm->unlock().
Postconditions: owns == false
Throws: system_error when an exception is required ([thread.req.exception]).