explicit basic_waitable_timer(io_context& ctx);
Effects: Equivalent to basic_waitable_timer(ctx, time_point()).
basic_waitable_timer(io_context& ctx, const time_point& t);
basic_waitable_timer(io_context& ctx, const duration& d);
Effects: Sets the expiry time as if by calling expires_after(d).
Postconditions: get_executor() == ctx.get_executor().
basic_waitable_timer(basic_waitable_timer&& rhs);
Effects: Move constructs an object of class basic_waitable_timer<Clock, WaitTraits> that refers to the state originally represented by rhs.