N4965 Editors’ Report — Programming Languages — C++

Date: 2023-10-15

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

Comments on the Draft International Standard

This report includes a snapshot of our dispositions on the Draft International Standard (DIS) ballot comments for C++23 from national bodies and the ISO secretariat. Some of them only apply to the published standard document and not the working draft, and the corresponding edits do not appear in the working draft commit history. All comments on the ballot were editorial.

Editorial changes

There have not been any motions from WG21 since the last working draft. This revision incorporates all the changes resulting from the DIS ballot comments for C++23, in as far as they apply to the current working draft, as well as other editorial changes.

Minor editorial changes

A log of editorial fixes made to the working draft since N4958 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 a4b1ffd9e65188ae19c29dffd2db42cb1558cee2
Author: Jan Schultke <me@eisenwave.net>
Date:   Tue Aug 15 01:18:00 2023 +0200

    [except.terminate] add comma after introductory phrase (#6446)

commit aa8a5315136feb1af9084a2a914ba19cd8758a74
Author: Salvage <29021710+Saalvage@users.noreply.github.com>
Date:   Sun May 28 18:59:26 2023 +0200

    [flat.multiset.defn] Fix minor errors and inconsistencies

    [flat.set.defn] and [flat.multiset.defn] are now formatted identically.
    Additionally removed erroenous template parameters in two deduction guides.

commit d3ac7d4c1c74df5d5b375f4c0260345be18b0b0b
Author: lprv <100177227+lprv@users.noreply.github.com>
Date:   Wed Aug 16 16:21:40 2023 +0200

    [conv.ptr, conv.mem] Remove redundant text on null pointer comparisons (#6411)

commit b55ad4cb65b53bb6b6e60064938537f07d63bfb3
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Thu Aug 17 00:32:21 2023 +0200

    [algorithms.parallel.defns] New paragraph for example (#6447)

    Making the example a sibling to the preceding paragraph
    rather than part of it resets its list numbering, which is less
    confusing than continuing numbering.

commit be07cd4e87c693fb9749c1e5e7c07ee0cf9e0084
Author: A. Jiang <de34@live.cn>
Date:   Wed Aug 2 01:28:29 2023 +0800

    [diagnostics] Exposition-only formatting for members

commit 7b7dedba78c8ae860db78feb3149acdf34ebb551
Author: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Date:   Thu Aug 17 21:04:37 2023 +0200

    [time.general] Add a reference to time.hash in the summary

    [time.general] has a library summary with references to the various
    subclauses; [time.hash] was missing, add it.

commit 1e9e54ef536870ea01e6b016e4219e57df0c099b
Author: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Date:   Thu Aug 17 21:07:27 2023 +0200

    [time.hash] Fix a typo in the code for zoned_time

    The `m` was supposed to be a `,` to separate the template arguments.

commit a272b7cd04dc0be488250a0c6aaead160e778774
Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
Date:   Fri Aug 18 12:11:24 2023 +0800

    [iterator.concept.readable] Add missing \expos for indirectly-readable-impl

    Also adjust horizontal whitespace in related comments.

commit 846dc84ac222e5f4a26373899a2cbd683f83991c
Author: Jan Schultke <me@eisenwave.net>
Date:   Sun Aug 20 16:56:55 2023 +0200

    [diff.cpp20.utilities] Hyphenate bit-fields (#6481)

commit 433baff775b00c2b72d0d81d792c24617c2ace06
Author: Jan Schultke <me@eisenwave.net>
Date:   Sun Aug 20 20:56:34 2023 +0200

    [tuple.swap] Improve 'call x with y' wording (#6478)

commit 1c22d62180901069128b21daa2773d40566bd983
Author: Jan Schultke <me@eisenwave.net>
Date:   Mon Aug 21 08:31:10 2023 +0200

    [lex.phases] Add cross-reference to [cpp.include] (#6485)

commit a54e71ed55a590214f2f33f4b1b900263a5f0b0d
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Fri Aug 25 18:05:32 2023 +0200

    [rand.device] Remove stray \textit.

    Fixes #6513.

commit 9a0b5d767ed6ef038adc129856c0c0623f552abe
Author: Jan Schultke <me@eisenwave.net>
Date:   Mon Aug 28 14:51:28 2023 +0200

    [vector.data],[array.members] Clarify boolean condition (#6526)

commit 8845a3778dbbd078c83a66ac09ae07e6357ec3e5
Author: Eisenwave <me@eisenwave.net>
Date:   Mon Aug 28 15:33:11 2023 +0200

    [expr.call] add further forward references

commit 837d6c979124200f1e06bc582079a60767c2756b
Author: Daniel Krügler <daniel.kruegler@gmail.com>
Date:   Sat Aug 26 18:35:55 2023 +0200

    [atomics] Reword preconditions on memory_order values in a positive form

commit 55b87300ce414fc5aa761838f217a957c797e9bf
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Aug 29 13:12:09 2023 +0100

    [format.string.std] Fix example

commit 61c089e934c1df406580eeb488dd5cee0900a7b1
Author: A. Jiang <de34@live.cn>
Date:   Sat Jul 29 01:36:15 2023 +0800

    [intro.object] Fix alignment in example

    Makes the storage in the example properly aligned,
    and explicitly states size assumption.

commit 90d56dbe810e707d90322a3d16256e122e915eca
Author: Eisenwave <me@eisenwave.net>
Date:   Sat Aug 19 15:51:27 2023 +0200

    [expr.sizeof] turn identifier into a grammarterm

commit f52ffc9054913f3f9a4c5dc6973f6c5c3e7f1096
Author: Jan Schultke <me@eisenwave.net>
Date:   Wed Aug 30 08:56:33 2023 +0200

    [class.access.general] Fix improper \keyword{private} (#6532)

commit d02a12a70c53974442f3e3ca4a75227783ea39d7
Author: Jan Schultke <me@eisenwave.net>
Date:   Wed Aug 30 19:54:36 2023 +0200

    [lex.string] Mark "narrow string literal" as a definition (#6533)

commit 31154dccdbe33aadb91d43cc03884f2d1aa5dbc0
Author: Jan Schultke <me@eisenwave.net>
Date:   Sat Sep 2 09:08:17 2023 +0200

    [class.local] Add comma after introductory phrase (#6545)

commit f9d08b09ffd8f68a32cbb480d54ab517e425d519
Author: Joshua Berne <berne@notadragon.com>
Date:   Sat Sep 2 12:56:57 2023 -0400

    [diff.cpp20.thread] Add hyphen for "ill-formed" (#6550)

commit 9130806ceb4a9476153eb7544b4509b713cce3e0
Author: Eisenwave <me@eisenwave.net>
Date:   Wed Aug 30 14:01:06 2023 +0200

    [fs.path.member] fix empty() == true

commit ae4ae54b293c28d782902b955af8abae5229fc6d
Author: Eisenwave <me@eisenwave.net>
Date:   Wed Aug 30 14:01:49 2023 +0200

    [fs.path.modifiers] fix empty() == true

commit ab4185710a64b303e6d302ac43c543849d79c5a8
Author: Eisenwave <me@eisenwave.net>
Date:   Wed Aug 30 14:06:30 2023 +0200

    [fs.filesystem.error.members] fix missing 'is true'

commit 86b18720b37dadefe6c753ac2aec478b8f87593d
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Tue Sep 5 16:19:25 2023 -0400

    [basic.types.general] Apply Oxford comma consistently (#6554)

commit 16c8ce5db2173a098a91e552dcfa3544c67e544f
Author: Eelis <github.com@contacts.eelis.net>
Date:   Fri Sep 8 08:05:36 2023 +0200

    [mdspan.submdspan.extents] Format equations as math (#6530)

commit 3bdb5e7b2b947ecd9fbb42029899ec098b51c51c
Author: Casey Carter <Casey@Carter.net>
Date:   Wed Sep 13 00:24:17 2023 -0700

    [mdspan.layout.stride.cons] Fix cross-reference (#6565)

commit 536653b854e293af569156864ea6aa407c90e011
Author: Casey Carter <Casey@Carter.net>
Date:   Mon Sep 11 10:36:39 2023 -0700

    [mdspan.extents.cons] require conversions to index_type to be nonnegative

    "nonnegative" is meaningless for a value of some arbitrary type which we've only required to be convertible to the integral type `index_type`, so this wording clearly intends to constrain the result of the conversion.

commit 5c7841b1530dc02dbf7feacd5e154b777632dc36
Author: Casey Carter <Casey@Carter.net>
Date:   Mon Sep 11 16:56:47 2023 -0700

    [mdspan.layout.stride.cons] Convert to integral type before comparing to 0

    `s[i]` is an lvalue of a type that we can only convert to `index_type`; clearly the wording intends that the result of the conversion should be `> 0`.

commit 24659bd716808538fb7066103a396e785e4f0099
Author: Casey Carter <Casey@Carter.net>
Date:   Mon Sep 11 16:59:56 2023 -0700

    [mdspan.layout.stride.expo] Convert to integral type to perform math

    [mdspan.layout.stride.cons] uses either a span or array of a type which we can only convert to `index_type` as the second argument to the exposition-only `REQUIRED-SPAN-SIZE`. We must perform that conversion before doing math with the result.

commit 81c3897d34ccd32d4ccdbe3c74091ba1db458533
Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
Date:   Wed Oct 4 00:22:33 2023 +0800

    [const.iterators.ops] Add missing \pnum and replace returns with effects (#6581)

commit 34cf81ebc821377eb3969002e4669bf5e08f479f
Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
Date:   Wed Oct 4 02:59:42 2023 +0800

    [common.iter.const] Add missing period for Returns (#6584)

commit 22537613dd844670ee9fb9d5afcf19f89c26fd26
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Tue Sep 26 07:21:52 2023 +0200

    [temp.over.link] Fix phrasing and cross-reference introduced by P1787R6

commit 1398617dfd99dd3383e801abee6ce58629439f3a
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Oct 4 17:48:32 2023 +0200

    [tab:headers.cpp] Add <hazard_pointer> (#6586)

commit 78635c91ac910e9c0953e1784eec648a214eb5ad
Author: Casey Carter <Casey@Carter.net>
Date:   Wed Oct 4 14:44:18 2023 -0700

    [string.cons] Remove erroneous paragraph break (#6587)

commit a2e820424e089806191a40d43df2360906902d86
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Tue Sep 19 13:36:52 2023 +0100

    [range.utility.conv.to] Add terminating condition for first bullet

    We currently fail to say what happens if the first bullet is true, but
    then none of its sub-bullets is true.

commit 9369ba13509cd5d2c9e862b7ad02f109c204a585
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Tue Sep 19 16:19:50 2023 +0100

    [version.syn] Put feature test macros in alphabetical order

commit 1430209dbf6edda0827207166770c4d964cf0598
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Oct 6 15:53:39 2023 +0200

    [time.format] Make reference to ISO 8601 more precise

    Fixes ISO/CS 003 (C++23 DIS).

commit 7ed9cbfef44d15b798af83223f5d3b62927652a5
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Oct 6 15:14:44 2023 +0200

    [intro.refs] Fix title of ISO/IEC 9899:2018

    Fixes ISO/CS 004 (C++23 DIS).

commit 258290ecc9d6e4d615b29173fd520df1f66a3292
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Oct 6 01:21:01 2023 +0200

    [annex] Fix table numbering in annexes

    Fixes ISO/CS 029 (C++23 DIS).

commit c39f5b014540820b4ea2061805a92c417e43ca0d
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Oct 6 14:59:03 2023 +0200

    [lex.name] Add cross-reference to Annex E

    Fixes ISO/CS 030 (C++23 DIS).

commit b5d6409bf5132d653bc13a3ce8f76c556d5d6fc9
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Oct 7 22:50:53 2023 +0200

    [defns.component] Remove unwarranted italics

    Fixes ISO/CS 018 (C++23 DIS).

commit 722bd4f167badc5bb5dddde9b0d00f91c2ef1644
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Oct 6 13:24:16 2023 +0200

    [util.smartptr.shared.cmp] Fix missing right parenthesis

    Fixes NB JP 025 (C++23 DIS).

commit 24b090f5c63bf99d4cdcea8989d885f2d23c00e7
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Oct 6 13:20:03 2023 +0200

    [unique.ptr.runtime.modifiers] Fix placement of 'constexpr'

    Fixes NB JP 024 (C++23 DIS).

commit 400521547f60196f6dfa7857bdcc907698991df8
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Oct 7 11:11:15 2023 +0200

    [expr.const] Amend comments in example

    Fixes NB JP 023 (C++23 DIS).

commit 812e64a65699bb01203fbedcc7d9d5ea004a5007
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Oct 7 22:32:16 2023 +0200

    [expr.prim.lambda.general] Add example for parsing ambiguity

    Fixes NB JP 021 (C++23 DIS).

commit bd7f9a9e640bfcd204cabecf1cc4953b7138554e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Oct 7 10:38:29 2023 +0200

    [intro.scope] Clarify 'they'

    Fixes ISO/CS 034 (C++23 DIS).

commit dc597fa561a795c100a36f46376d6ddd0cf93a31
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Mon Oct 9 12:02:19 2023 -0400

    [expr.prim.lambda.closure] Insert an extra \pnum (#6594)

commit d81c17120e5a527f779b965ba8fd1ce66cfc24ef
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Mon Oct 9 12:03:25 2023 -0400

    [obj.lifetime] Dehyphenate trivially-copyable (#6592)

commit d29b1fc1c22018b1a83cee910ebdbb4520d2c960
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Oct 8 09:52:42 2023 +0200

    [lex.charset] Add reference to the Unicode Standard

commit e128de19470877fbf8f0335b8c0e2a1700f2e320
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Oct 8 11:52:06 2023 +0200

    [lex.charset] Clarify normative reference to Unicode for UTF-x

    Fixes ISO/CS 008 (C++23 DIS).

commit 4d603c640dd47c71f84bbce55416302efab8b298
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Oct 10 23:55:22 2023 +0100

    [intro.defs] Remove inappropriate paragraph.

    Only specific, fixed wording is allowed in Clause 3.

    Fixes ISO/CS 009 (C++23 DIS).

commit 7d4fa2432b58a2ef6a2062812ec00ccde4443acf
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Oct 11 01:04:35 2023 +0200

    [intro.defs] Remove unused definitions

    The terms "arbitrary-positional stream", "repositional stream",
    and "iostream class templates" are removed.

    Fixes ISO/CS 011 and ISO/CS 16 (C++23 DIS).

commit 4c76193e3d310ea5a18679ab86a54074fe1635e9
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Oct 11 00:14:53 2023 +0100

    [defns.impl.limits] Use singular

    Fixes ISO/CS 015 (C++23 DIS).

commit f672ecf38d2aec6ccf184d1a36bc4e83809afab0
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Oct 11 00:46:29 2023 +0100

    [std] Replace "C Standard" with "ISO/IEC 9899:2018".

    Fixes ISO/CS 035 (C++23 DIS).

commit 2d6182932954732f71a28d90ec1f1b23838ccc67
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Oct 11 01:13:46 2023 +0100

    [intro.{r,d}efs] Make "C standard library" a defined term

    Partially fixes ISO/CS-002 (C++23 DIS).

commit 4676f765f696774807688c3adfdc2eb03905a827
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Oct 8 12:30:18 2023 +0200

    [type.traits] Add references to tables

    Fixes ISO/CS 001 (C++23 DIS).

commit 583391e28f34d6e0a17f67f77e04ba4f924c1d13
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Oct 14 20:42:50 2023 +0100

    [intro.defs, dcl.init.list] Move definition of direct-non-list-init

    Partially fixes ISO/CS-11 (C++23 DIS).

commit 4a8e84ede8a927a7ebe7fa16a086041db437d57c
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Oct 14 20:58:52 2023 +0100

    [xrefdelta] Remove mention of removals that are now already in C++23