This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of WP status.

4438. Bad expression in [exec.when.all]

Section: 33.9.12.12 [exec.when.all] Status: WP Submitter: Eric Niebler Opened: 2025-10-30 Last modified: 2025-11-11

Priority: Not Prioritized

View all other issues in [exec.when.all].

View all issues with WP status.

Discussion:

Addresses US 220-344 and US 224-342

33.9.12.12 [exec.when.all] p5 reads as follows:

-5- Let make-when-all-env be the following exposition-only function template:

template<class Env>
  constexpr auto make-when-all-env(inplace_stop_source& stop_src,        // exposition only
                                   Env&& env) noexcept {
  return see below;
}

Returns an object e such that

The problem is with "state.stop-src.get_token()" in bullet (5.2). There is no state object here. This expression should be stop_src.get_token().

[Kona 2025-11-04; add edits to address NB comments.]

[Kona 2025-11-06; approved by LWG. Status changed: New → Immediate.]

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

Proposed resolution:

This wording is relative to N5014.

  1. Modify 33.9.12.12 [exec.when.all] as indicated:

    -5- Let make-when-all-env be the following exposition-only function template:

    template<class Env>
      constexpr auto make-when-all-env(inplace_stop_source& stop_src,        // exposition only
                                       Env&& env) noexcept; {
      return see below;
    }
    

    -?- Returns: An Returns and object e such that

    • (5.1) — decltype(e) models queryable, and
    • (5.2) — e.query(get_stop_token) is expression-equivalent to state.stop-srcstop_src.get_token(), and
    • (5.3) — given a query object q with type other than cv get_stop_token_t and whose type satisfies forwarding-query, e.query(q) is expression-equivalent to get_env(rcvr)env.query(q) if the type of q satisfies forwarding-query, and ill-formed otherwise.