|  | 
        The basic_waitable_timer
        template uses wait traits to allow programs to customize wait
        and async_wait behavior.
        [Note: Possible uses of wait traits include:
 — To
        enable timers based on non-realtime clocks.
 — Determining how quickly
        wallclock-based timers respond to system time changes.
 — Correcting for
        errors or rounding timeouts to boundaries.
 — Preventing duration overflow.
        That is, a program may set a timer's expiry e
        to be Clock::max() (meaning
        never reached) or Clock::min() (meaning
        always in the past). As a result, computing the duration until timer expiry
        as e -
        Clock::now() may
        cause overflow. —end note]
      
        For a type Clock meeting
        the Clock requirements (C++Std
        [time.clock.req]), a type X
        meets the WaitTraits requirements
        if it satisfies the requirements listed below.
      
        In the table below, t denotes
        a (possibly const) value of type Clock::time_point;
        and d denotes a (possibly
        const) value of type Clock::duration.
      
Table 34. WaitTraits requirements
| expression | return type | 
                  assertion/note | 
|---|---|---|
| 
                   | 
                   | 
                  Returns a  | 
| 
                   | 
                   | 
                  Returns a  |