This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
get_env noexcept-ness from inline_schedulerSection: 33.13.4 [exec.inline.scheduler] Status: New Submitter: Eric Niebler Opened: 2025-11-05 Last modified: 2025-11-15
Priority: Not Prioritized
View all issues with New status.
Discussion:
33.13.4 [exec.inline.scheduler] bullet (3.2) reads:
- (3.2) — the expression
get_completion_scheduler<set_value_t>(get_env(sndr))has typeinline_schedulerand is potentially-throwing if and only ifget_env(sndr)is potentially-throwing.
get_env(sndr) is never potentially-throwing because it mandates that sndr.get_env() cannot throw,
see 33.5.4 [exec.get.env].
get_completion_scheduler<set_*_t>(attrs) mandates that
attrs.query(get_completion_scheduler<set_*_t>) cannot throw.
Proposed resolution:
This wording is relative to N5014.
Modify 33.13.4 [exec.inline.scheduler] as indicated:
-3- Let
sndrbe an expression of typeinline-sender, letrcvrbe an expression such thatreceiver_of<decltype((rcvr)), CS>istruewhereCSiscompletion_signatures<set_value_t()>, then:
- (3.1) — the expression
connect(sndr, rcvr)has typeinline-state<remove_cvref_t<decltype((rcvr))>>and is potentially-throwing if and only if((void)sndr, auto(rcvr))is potentially-throwing, and- (3.2) — the expression
get_completion_scheduler<set_value_t>(get_env(sndr))has typeinline_schedulerand is potentially-throwing if and only if.get_env(sndr)is potentially-throwing