The BasicLockable requirements, the Lockable requirements,
and the TimedLockable requirements list the requirements imposed by these library types
in order to acquire or release ownership of a lock by a given execution agent.
A type L meets the TimedLockable requirements if it meets the Lockable
requirements and the following expressions are well-formed and have the specified semantics
(m denotes a value of type L, rel_time denotes a value of an
instantiation of duration, and abs_time denotes a value
of an instantiation of time_point).