# N4989 Editors' Report -- Programming Languages -- C++

Date: 2024-08-05

Thomas Köppe (editor, Google DeepMind)  
Jens Maurer (co-editor)  
Dawn Perchik (co-editor, Bright Side Computing, LLC)  
Richard Smith (co-editor, Google Inc)  

Email: `cxxeditor@gmail.com`

## Acknowledgements

Thanks to all those who have [submitted editorial
issues](https://github.com/cplusplus/draft/wiki/How-to-submit-an-editorial-issue)
and to those who have provided pull requests with fixes.

## New papers

 * [N4988](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4988.pdf) is the
   current working draft for C++26. It replaces
   [N4986](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4986.pdf).
 * N4989 is this Editors' Report.

## Draft approval

The previous draft
[N4986](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4986.pdf)
was not approved at any WG21 meeting. For approval of this draft, N4988,
please consult the previous Editors' report 
[N4987](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4987.html)
as well as this one.

## Motions incorporated into working draft

### Notes on motions

All passed motions from CWG and LWG motions 1 through 9 were applied in the previous draft
[N4986](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4986.pdf).
LWG motions 10, 11, and 12 had not yet been applied due to a lack of time,
and are included in this draft.

The full list of approved motions is included here for ease of reference.

### Core working group polls

**Already applied in previous draft.**

CWG Poll 1. Accept as Defect Reports and apply the proposed resolutions of all issues except 2819, 2858, and 2876 in
[P3345R0](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3345r0.html)
(Core Language Working Group "ready" Issues for the June, 2024 meeting) to the C++ Working Paper.

CWG Poll 2. Apply the proposed resolution of issues 2819, 2858, and 2876 in
[P3345R0](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3345r0.html)
(Core Language Working Group "ready" Issues for the June, 2024 meeting) to the C++ Working Paper.

CWG Poll 3. Apply the changes in
[P2747R2](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2747r2.html)
(`constexpr` placement new) to the C++ Working Paper.

CWG Poll 5. Apply the changes in
[P3144R2](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3144r2.pdf)
(Deleting a Pointer to an Incomplete Type Should be Ill-formed) to the C++ Working Paper.

CWG Poll 6. Apply the changes in
[P2963R3](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2963r3.pdf)
(Ordering of constraints involving fold expressions) to the C++ Working Paper.

CWG Poll 7. Apply the changes in
[P0963R3](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0963r3.html)
(Structured binding declaration as a condition) to the C++ Working Paper.

CWG Poll 4 did not have consensus.

### Library working group polls

**Already applied in previous draft.**

LWG Poll 1. Apply the changes for all Ready and Tentatively Ready issues in
[P3341R0](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3341r0.html)
(C++ Standard Library Ready Issues to be moved in St. Louis, Jun. 2024) to the C++ working paper.

LWG Poll 2. Apply the changes in
[P2997R1](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2997r1.html)
(Removing the common reference requirement from the indirectly invocable concepts) to the C++ working paper.

LWG Poll 3. Apply the changes in
[P2389R2](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2389r2.html)
(`dextents` Index Type Parameter) to the C++ working paper.

LWG Poll 4. Apply the changes in
[P3168R2](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3168r2.html)
(Give `std::optional` Range Support) to the C++ working paper.

LWG Poll 5. Apply the changes in
[P3217R0](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3217r0.html)
(Adjoints to "Enabling list-initialization for algorithms": `find_last`) to the C++ working paper.

LWG Poll 6. Apply the changes in
[P2985R0](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2985r0.html)
(A type trait for detecting virtual base classes) to the C++ working paper.

LWG Poll 7. Apply the changes in
[P0843R14](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0843r14.html)
(`inplace_vector`) to the C++ working paper.

LWG Poll 8. Accept as a Defect Report and apply the changes in
[P3235R3](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3235r3.html)
(std::print more types faster with less memory) to the C++ working paper.

LWG Poll 9. Apply the changes in
[P2968R2](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2968r2.html)
(Make std::ignore a first-class object) to the C++ working paper.

**Newly applied in this draft:**

LWG Poll 10. Apply the changes in
[P2075R6](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2075r6.pdf)
(Philox as an extension of the C++ RNG engines) to the C++ working paper.

LWG Poll 11. Apply the changes in
[P2422R1](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2422r1.html)
(Remove nodiscard annotations from the standard library specification) to the C++ working paper.

LWG Poll 12. Apply the changes in
[P2300R10](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)
(std::execution) to the C++ working paper.

## Editorial changes

### Major editorial changes

There were no major editorial changes.

### Minor editorial changes

A log of editorial fixes made to the working draft since N4986 is below. This
list excludes changes that do not affect the body text or only affect whitespace
or typeface. For a complete list including such changes (or for the actual
deltas applied by these changes), consult the
[draft sources on GitHub](https://github.com/cplusplus/draft/compare/n4986...n4988).

    commit a52859fad0d3bc56ec941fc287d5cebc0fd080dc
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Fri Jul 12 14:35:07 2024 +0100

        [diff.cpp23.dcl.dcl] Fix capitalisation of heading

    commit 811e9bb15fe6b8fe0a6e5584525b7839e329126b
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Tue Jul 23 00:19:37 2024 +0100

        [intro.refs] Move footnote

        As requested by ISO/CS.

    commit dd306a57cdcce4596fb9d5ce917075eee8e60f4b
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Tue Jul 23 00:22:31 2024 +0100

        [intro.races] Rephrase note to avoid awkward "can not".

        Suggested by ISO/CS.

    commit 3dc8333128753e8eb4c39f353aa272a63221e6d5
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Tue Jul 23 00:28:48 2024 +0100

        [library.c] Clarify that Annex F comes from ISO/IEC 9899:2018

    commit b303620f529bfe517fb0c79d3e7f644c54a1e6cb
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Tue Jul 23 00:20:42 2024 +0100

        [rand.dist] Remove textual elements from forumla.

        Those were left over from when we converted the text-integrated
        formula to self-contained, numbered ones.

    commit 7228e06a7973282cf1034a9cdb095dd863aef377
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Wed Jul 17 00:48:45 2024 +0100

        [tab:headers.cpp.fs] Use a more appropriate subclause for inplace_vector

    commit 3f5771916e846d16330a87df15d35e797ea66437
    Author: Alisdair Meredith <alisdairm@me.com>
    Date:   Tue Jul 23 17:48:36 2024 -0400

        [depr.c.macros] Cross-reference the C headers for deprecated macros

    commit be25cad169c62518e934cd3269e966091b20a4c4
    Author: A. Jiang <de34@live.cn>
    Date:   Mon Jul 22 17:25:04 2024 +0800

        [inplace.vector.syn] Default template argument for `erase`

        The default template argument is already in [inplace.vector.erasure].

    commit e0fe4a30614303116dc91357ab1bb483dc98b2ca
    Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
    Date:   Mon Jul 22 00:24:26 2024 +0800

        [inplace.vector.modifiers] Fix typo

    commit 420cff6a620498b6e6b0a4a7f0757bfa8dfb2a1c
    Author: Hewill Kang <hewillk@gmail.com>
    Date:   Sun Jul 28 00:05:29 2024 +0800

        [func.search.bm] Remove superfluous the (#7160)

    commit cf27216f6aeba4a7e1debed304303fc2e69b2d65
    Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
    Date:   Mon Jul 22 13:11:05 2024 +0800

        [inplace.vector.erasure] Added missing return statement

    commit dc8b2d4d198a307b749832044e2819de1378ace7
    Author: Alisdair Meredith <alisdairm@me.com>
    Date:   Tue Jul 23 22:28:38 2024 -0400

        [locale.ctype.general] Better cross-ref standard headers

    commit f181708d17038c0ebe42aff9d61e79222e5a06b0
    Author: Jonathan Wakely <cxx@kayari.org>
    Date:   Fri Jul 19 20:33:06 2024 +0100

        [basic.indet] Fix "errorneous" typo

    commit 1a15d3a3d84549687eb65a870952441c869f31a9
    Author: A. Jiang <de34@live.cn>
    Date:   Sun Jul 28 07:56:03 2024 +0800

        Make cross-reference more precise. (#7144)

        Co-authored-by: Eelis van der Weegen <eelis@eelis.net>

    commit 930502061ea47c184c3b25ed623801dfa5284167
    Author: Andreas Krug <153394595+Andreas-Krug@users.noreply.github.com>
    Date:   Sun Jul 28 01:57:52 2024 +0200

        [temp.constr.normal] Remove duplicate "the" (#7135)

    commit 11e13d5d858f06ec163ece2881af642a23fe5b96
    Author: Andreas Krug <153394595+Andreas-Krug@users.noreply.github.com>
    Date:   Sun Jul 28 01:58:09 2024 +0200

        [diff.cpp23.expr] Remove duplicate "that" (#7134)

    commit 8ead4680a67cacffe82e2fd74e64df76120cb1a9
    Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
    Date:   Wed Jul 10 20:28:34 2024 +0800

        [variant.visit] Add constexpr to as-variant

    commit 8d8861cdc944b784db14be27ce2541071288dcc5
    Author: A. Jiang <de34@live.cn>
    Date:   Mon May 13 00:33:24 2024 +0800

        [print.syn] Show `locking` functions in the synopsis of `<print>`

    commit 5c3858e09e73c49748901aceb33acc7cd86bd7de
    Author: Eelis <github.com@contacts.eelis.net>
    Date:   Sun Jul 28 13:35:39 2024 +0200

        [exec.snd.general] Add missing period (#7172)

    commit 3e87f29c42ad38e224ac6e7e75dc08220b440189
    Author: Eelis <github.com@contacts.eelis.net>
    Date:   Sun Jul 28 13:37:06 2024 +0200

        [out.ptr.t] Fix bullet placement for item that starts with codeblock (#7173)

    commit 81d85dfbee01b8fdf993fac4efeb40fb00b18144
    Author: Eelis <github.com@contacts.eelis.net>
    Date:   Sun Jul 28 13:39:12 2024 +0200

        [range.concat.iterator] Remove stray hyphen (#7171)

    commit 500b8f49f28b51c576eb671ee067efcc1bc002a9
    Author: A. Jiang <de34@live.cn>
    Date:   Sun Jul 28 22:22:54 2024 +0800

        [print.syn] Update `locking` to `buffered` (#7168)

        The function names were changed by P3235R3.

    commit 9b3d01e82b03e26cf9e1fa06a582ec931ca00052
    Author: Eelis <github.com@contacts.eelis.net>
    Date:   Sun Jul 28 21:16:58 2024 +0200

        [execution.syn] Fix read_env name (#7169)

    commit 5bac031ccb4f7ce511c6e95b63b39eee2eb14c87
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Sat Jul 27 00:48:42 2024 +0100

        [stoptoken.general, stopsource.general] Remove DMI from stop-state member

        For stoptoken::stop-state, the default-initialized value is already
        correct, and no further "{}" initializer is needed.

        For stopsource::stop-state, the DMI "{}" is never used, since the
        constructor is explicitly specified and not defaulted.

    commit 917c271c926214e286f560c4a3f2aadc59dadcb7
    Author: Thomas Köppe <tkoeppe@google.com>
    Date:   Sat Jul 27 00:12:22 2024 +0100

        [exec.snd.general] Remove disconnected and obsolete paragraph.

    commit 609068d41d699b85b0677fbb206235a4bc30fd77
    Author: Eisenwave <me@eisenwave.net>
    Date:   Sat Jun 8 16:13:36 2024 +0200

        [array.cons] Fix various wording issues

    commit f8468b9606aa4db0a55f1ecde046025876c5de23
    Author: Eisenwave <me@eisenwave.net>
    Date:   Sun Aug 6 21:52:00 2023 +0200

        [expr.cond] itemize p4

    commit d9bff4abf4e4de12ef816d3e9df4ed5c6733da64
    Author: Hewill Kang <hewillk@gmail.com>
    Date:   Mon Jul 29 23:31:19 2024 +0800

        [coro.generator] Rename the generator's template parameter "V" to "Val" (#7129)

    commit aa4a13e9ea6e81e7d2ef5205de9e1f765a27bbbe
    Author: Eisenwave <me@eisenwave.net>
    Date:   Sat Aug 19 13:33:10 2023 +0200

        [basic.fundamental] itemize uses of void expressions

    commit 0711baa8bf611656aae770a6bc23b7ee96ed5811
    Author: Eisenwave <me@eisenwave.net>
    Date:   Sat Aug 19 13:47:04 2023 +0200

        [basic.fundamental] remove redundant void conversion wording

    commit 5342083f2c84f6592c455562d8a6b464d39d86ba
    Author: Alisdair Meredith <alisdairm@me.com>
    Date:   Mon Jun 17 10:55:22 2024 +0700

        [cpp.pre] define, index, and consistently use the term 'logical source line'

    commit 56079f18c4751d4dd15fbdf7d50179d2044345f3
    Author: Casey Carter <Casey@Carter.net>
    Date:   Fri Jan 12 10:35:39 2024 -0800

        [structure.specifications] clarify description of Results element

        The text "... the expression is an lvalue if the type is an lvalue reference type, an xvalue if the type is an rvalue reference type, and a prvalue otherwise" clearly indicates that a Result element describes the type and value category of an expression, yet we summarize it as only "a description of the type of the expression".

    commit 407c552023c069afc2438cd462049a323c971bb1
    Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
    Date:   Tue Jul 16 19:41:36 2024 -0400

        [deque, forward.list, list, vector] Fix instances of "FooInsertable into *this"

        Fixes #7133

    commit 4bf5bd233461b49924ea330b95698fdc43cf3636
    Author: A. Jiang <de34@live.cn>
    Date:   Thu Apr 25 00:46:41 2024 +0800

        [alg.replace] Fix misapplication of P2248R8 to `std::replace_copy`

        Removes wrongly added default template arguments that are not present in that paper.

    commit d0615b3d8b991fd0cd58fbd6b75da727423cff4e
    Author: Alisdair Meredith <alisdairm@me.com>
    Date:   Tue Jul 23 22:20:27 2024 -0400

        [containers] Consistently xref header synopses from General clauses

    commit 35904b92e4bbabd0303f8fb7cbbe3a6142639876
    Author: A. Jiang <de34@live.cn>
    Date:   Sat Apr 27 00:46:29 2024 +0800

        [expr.call] Say implicit object parameter instead of `this`

        And correct the initialization of the implicit object parameter.

    commit 7f76c21f933b167d71a1ff12584911e82477454d
    Author: Jonathan Wakely <cxx@kayari.org>
    Date:   Mon Jul 29 18:48:49 2024 +0100

        [alg.search] Replace "the following corresponding conditions"

        It's not clear which conditions correspond to each overload.

    commit 69ddb6ec0b50c92390391ec54b97c92ef2179869
    Author: Andreas Krug <153394595+Andreas-Krug@users.noreply.github.com>
    Date:   Mon Jul 29 21:54:11 2024 +0200

        [exec.stopped.opt] Fix indefinite article (#7186)

    commit 4800c7b83d2fbde2c63c6811716bf62df047f5ae
    Author: Hewill Kang <hewillk@gmail.com>
    Date:   Tue Jul 30 18:02:17 2024 +0800

        [range.join.with.iterator] Fix typo (#7131)

    commit 3dba07b8277a59792430cd166192ed41e428c6f7
    Author: Andreas Krug <153394595+Andreas-Krug@users.noreply.github.com>
    Date:   Tue Jul 30 12:03:20 2024 +0200

        [exec.util.cmplsig.trans] Fix English grammar (#7188)

    commit f640daed4a6304ef4e2c289c6d42e754d06cd4ee
    Author: Anoop Rana <93918384+ranaanoop@users.noreply.github.com>
    Date:   Thu Jul 25 19:57:36 2024 +0530

        [basic.scope.scope] Replaced the term top-level reference with just reference

        [basic.scope.scope] Replaced the term top-level reference with just reference in light of [this issue](https://github.com/cplusplus/CWG/issues/569)

    commit 54fb7eb6ada6e7a4d47c9a310675d5cf55bbd5c7
    Author: Alisdair Meredith <alisdairm@me.com>
    Date:   Tue Jul 30 16:22:02 2024 -0400

        [lex.pptoken] Consistent use of preprocessing vs processing

        There are three cases here all doing the same thing.  Two
        refer to preprocessing a directive, while the first refers
        to processing without the pre.
