[ This wording is relative to N3376. ]
Change [futures.unique_future] as indicated:
template <class Rep, class Period> future_status wait_for(const chrono::duration<Rep, Period>& rel_time) const;-21- Effects: none if the shared state contains a deferred function ([futures.async]), otherwise blocks until the shared state is ready or until the relative timeout ([thread.req.timing]) specified by rel_time has expired.
-22- Returns: […]
-??- Throws: timeout-related exceptions ([thread.req.timing]).
template <class Clock, class Duration> future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const;-23- Effects: none if the shared state contains a deferred function ([futures.async]), otherwise blocks until the shared state is ready or until the absolute timeout ([thread.req.timing]) specified by abs_time has expired.
-24- Returns: […]
-??- Throws: timeout-related exceptions ([thread.req.timing]).
Change [futures.shared_future] as indicated:
template <class Rep, class Period> future_status wait_for(const chrono::duration<Rep, Period>& rel_time) const;-23- Effects: none if the shared state contains a deferred function ([futures.async]), otherwise blocks until the shared state is ready or until the relative timeout ([thread.req.timing]) specified by rel_time has expired.
-24- Returns: […]
-??- Throws: timeout-related exceptions ([thread.req.timing]).
template <class Clock, class Duration> future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const;-25- Effects: none if the shared state contains a deferred function ([futures.async]), otherwise blocks until the shared state is ready or until the absolute timeout ([thread.req.timing]) specified by abs_time has expired.
-26- Returns: […]
-??- Throws: timeout-related exceptions ([thread.req.timing]).