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 and to those who have provided pull requests with fixes.

New papers

Draft approval

The previous draft N4986 was not approved at any WG21 meeting. For approval of this draft, N4988, please consult the previous Editors' report N4987 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. 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 (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 (Core Language Working Group "ready" Issues for the June, 2024 meeting) to the C++ Working Paper.

CWG Poll 3. Apply the changes in P2747R2 (constexpr placement new) to the C++ Working Paper.

CWG Poll 5. Apply the changes in P3144R2 (Deleting a Pointer to an Incomplete Type Should be Ill-formed) to the C++ Working Paper.

CWG Poll 6. Apply the changes in P2963R3 (Ordering of constraints involving fold expressions) to the C++ Working Paper.

CWG Poll 7. Apply the changes in P0963R3 (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 (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 (Removing the common reference requirement from the indirectly invocable concepts) to the C++ working paper.

LWG Poll 3. Apply the changes in P2389R2 (dextents Index Type Parameter) to the C++ working paper.

LWG Poll 4. Apply the changes in P3168R2 (Give std::optional Range Support) to the C++ working paper.

LWG Poll 5. Apply the changes in P3217R0 (Adjoints to "Enabling list-initialization for algorithms": find_last) to the C++ working paper.

LWG Poll 6. Apply the changes in P2985R0 (A type trait for detecting virtual base classes) to the C++ working paper.

LWG Poll 7. Apply the changes in P0843R14 (inplace_vector) to the C++ working paper.

LWG Poll 8. Accept as a Defect Report and apply the changes in P3235R3 (std::print more types faster with less memory) to the C++ working paper.

LWG Poll 9. Apply the changes in P2968R2 (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 (Philox as an extension of the C++ RNG engines) to the C++ working paper.

LWG Poll 11. Apply the changes in P2422R1 (Remove nodiscard annotations from the standard library specification) to the C++ working paper.

LWG Poll 12. Apply the changes in P2300R10 (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.

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.