Title
task::promise_type::unhandled_stopped() should be noexcept
Status
wp
Section
[task.promise]
Submitter
Dietmar Kühl

Created on 2025-08-31.00:00:00 last changed 5 days ago

Messages

Date: 2025-10-27.09:58:11

Proposed resolution:

In the synopsis in [task.promise] add noexcept to the declaration of task::promise_type::unhandled_stopped():

namespace std::execution {
  template<class T, class Environment>
  class task<T, Environment>::promise_type {
     ...
    coroutine_handle<> unhandled_stopped() noexcept;
    ...
  };
}

In the specification in [task.promise] paragraph 13 add noexcept:

coroutine_handle<> unhandled_stopped() noexcept;

-13- Effects: Completes the asynchronous operation associated with STATE(*this) by invoking set_stopped(std::move(RCVR(*this))).

Date: 2025-11-11.10:48:16

[ Kona 2025-11-08; Status changed: Voting → WP. ]

Date: 2025-10-15.00:00:00

[ 2025-10-17; Reflector poll. ]

Set status to Tentatively Ready after five votes in favour during reflector poll.

Date: 2025-10-27.16:17:32
Addresses US 252-387

The function task::promise_type::unhandled_stopped() is called from set_stopped() of a receiver and calls set_stopped itself. These functions are required to be noexcept. Thus, unhandled_stopped() can't throw an exception and should be marked noexcept. All other declarations of unhandled_stopped() are already marked noexcept but task::promise_type::unhandled_stopped() isn't.

History
Date User Action Args
2025-11-11 10:48:16adminsetstatus: voting -> wp
2025-10-30 17:45:31adminsetstatus: ready -> voting
2025-10-27 09:58:11adminsetmessages: + msg15444
2025-10-17 15:01:38adminsetmessages: + msg15239
2025-10-17 15:01:38adminsetstatus: new -> ready
2025-09-01 17:02:55adminsetmessages: + msg14996
2025-08-31 00:00:00admincreate