...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Adapt a completion token to cancel an operation if not complete before the specified relative timeout has elapsed.
template< typename Clock, typename WaitTraits, typename Executor, typename Rep, typename Period, typename CompletionToken> cancel_after_timer< decay_t< CompletionToken >, Clock, WaitTraits, Executor > cancel_after( basic_waitable_timer< Clock, WaitTraits, Executor > & timer, const chrono::duration< Rep, Period > & timeout, CompletionToken && completion_token);
When an asynchronous operation is used with cancel_after, a timer async_wait operation is performed in parallel to the main operation. If this parallel async_wait completes first, a cancellation request is emitted to cancel the main operation. Consequently, the application must ensure that the asynchronous operation is performed within an implicit or explicit strand.