N4951 Editors’ Report:
Programming Languages — C++

Date: 2023-05-10

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


Thanks to all those who have submitted editorial issues and to those who have provided pull requests with fixes.

New papers

Editorial changes

There have not been any motions from WG21 since the last working draft. This revision incorporates all the changes requested by the editorial review committee in preparation of the Draft International Standard (DIS) ballot, as well as other editorial changes.

Minor editorial changes

A log of editorial fixes made to the working draft since N4944 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 b8512a1c292adee71c1145d3c61e32d48dcb8daa
Author: morinmorin <mimomorin@gmail.com>
Date:   Wed Mar 15 01:45:28 2023 +0900

    [container.requirements.general] Move exposition-only concept

    The exposition-only concept container-compatible-range is defined
    in the subclause for allocator-aware containers, that does not
    actually use it.  This requirement is used throughout the subclause
    for a variety of contains, so relocate the definition into the
    leading subclause that provides a key to definitions used throughout
    the containers subclauses.

commit 6e7fd98b684a92405934de981abf01414a67ddbd
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Mar 23 14:21:22 2023 +0000

    [version.syn] bump value of __cpp_lib_allocate_at_least

    This is requested for the Tentatively Ready LWG issue 3887.

    Fixes #6202

commit a0403a9407e6520b6bbf0e818d9db8ac1282f4e1
Author: lprv <100177227+lprv@users.noreply.github.com>
Date:   Sat Mar 11 20:40:30 2023 +0000

    [module.interface] Fix outdated example

commit 2c7e87d447d65684c74890074999c60bb45712ab
Author: Christian Trott <crtrott@sandia.gov>
Date:   Fri Mar 24 09:32:22 2023 -0700

    [mdspan.layout.left.cons] extents() should be other.extents() (#6069)

    The precondition was erroneously referring to the not yet
    constructed extents instead of other.extents().

    Note that the extents of the to be constructed layout will be
    initialized with other.extents - i.e. after construction they will
    return the same value for the fwd-prod-of-extents etc.

commit 1b0fe66324f2d5e7861397d7f537243833418cde
Author: Jakub Mazurkiewicz <mazkuba3@gmail.com>
Date:   Fri Mar 24 17:33:09 2023 +0100

    [range.cartesian.view] Add missing views:: qualifier (#6059)

commit 562af663363337848bcb34a8f5ba37641fb0560e
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Mon Mar 27 17:06:50 2023 -0400

    [over.literal] Cross-reference deprecated grammar (#6209)

    The core convention is to retain deprecated wording in the
    core clauses, but always make a reference to Annex D
    where a feature, or parts of a feature, are deprecated.

commit ac47f9cb768760f0abd7a57cbf3074ad5eebf011
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Mon Mar 27 17:09:44 2023 -0400

    [container.reqmts] Move requirements to the right place (#6199)

    As part of the replacement of the container requirements tables with text,
    several paragraphs of general container requirements were buried
    in the new subsections for more specific requirements such as
    reversible containers or allocator-aware containers.

    This seems to have happened when general container requirements
    followed one of the container requirements tables that are now expressed
    as text. This change carefully restores text to the general container requirements
    clause, in the original order they appeared in C++20.

commit bb65fc8e22b8e056cfbeb45ba65c6f37bf355182
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Tue Mar 28 21:04:20 2023 +0200

    [dcl.decl.general] Fix cross-references

    "templated function" is defined in [temp.pre], but avoid having
    two cross-references to the same place in the same paragraph by
    dropping the cross-reference for the definition of the grammar
    non-terminal "requires-clause".

commit 8c99598b60f0a059b37c7e1fd82480aaf32169a5
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Mar 29 10:47:27 2023 +0100

    [class.member.lookup] Also change "N" to "M" in note.

    This change should have been part of the resolution of CWG2642 (via
    CWG Motion 1), but was accidentally omitted there.

commit 8e2d6ee92f372d9526c01a8fb601da9921c94b2a
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Mar 29 16:08:57 2023 +0100

    [stacktrace.format] Use full typename "basic_stacktrace<Allocator>".

commit 70b2f7b6bf0d7fe3d87d9438459f766fdd83b08c
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Mar 29 17:31:24 2023 +0100

    [indirectcallable.indirectinvocable] Remove stray "&".

    This was an error in the application of P2609R3.

commit 08581e85636794384029de729a641975bb13260c
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Sun Apr 16 05:18:24 2023 -0400

    [alg.unique] fix typo: namepace -> namespace

commit 1a2e97de0517bb9ee1715a9664fa2861fa025cda
Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
Date:   Mon Apr 17 14:31:05 2023 +0800

    [range.repeat.iterator] Remove redundant period (#6234)

commit 44ff7aa92ba7f716abe96c29876b2ea145a22c66
Author: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Date:   Fri Apr 21 18:56:31 2023 +0330

    [check.yml] update version of "upload" action (#6231)

    Update the `actions/upload-artifact` action to version 3.

commit 413b147b0f48ea87606e0b7fbc107c8316b98fc3
Author: Detlef Riekenberg <wine.dev@web.de>
Date:   Thu Apr 27 04:00:32 2023 +0200

    [compliance, headers.cpp.fs] Fix subclause name for cstddef (#6227)

commit 82ecf4355a016847ffcf778abfcf1fe96d02fc79
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Sun Apr 30 07:56:10 2023 -0400

    [flat.map.modifiers] Fix erroneous "try_emplace_hint" (#6238)

    The hint-taking operation is instead an overload of try_emplace.

commit 9568c66abd12eadd696b9f16bb4884908e2aad66
Author: Daniel Krügler <daniel.kruegler@gmail.com>
Date:   Sun Apr 30 13:57:23 2023 +0200

    [ranges] Remove "inline" from variable templates (#6218)

commit bdd25a63a8a84a1183ebc125dac132d0572f67fd
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Sun Apr 30 08:02:42 2023 -0400

    [iterator.concept.winc] Improve implementation-defined text (#6228)

commit 057da6c79e35cc4cdebaa5a6096738f273c6c2e8
Author: tocic <tocic@protonmail.ch>
Date:   Wed Sep 28 13:14:14 2022 +0300

    [back, macros] Fix inconsistent hyphenation of "cross-reference"

commit d1e109e43d7625f4a4ebb6a045fc68a275fca611
Author: tocic <tocic@protonmail.ch>
Date:   Wed Sep 28 13:19:36 2022 +0300

    [std] Fix inconsistent hyphenation of "multidimensional"

commit bf9edb92183b34421dd6e02474f2ac943fd7cea3
Author: tocic <tocic@protonmail.ch>
Date:   Fri Apr 7 13:56:59 2023 +0300

    [diff.cpp17.temp] Fix inconsistent hyphenation of "well-formed"

commit 62cd54aedecb8bf152e80b1aced64d80e0b8bff6
Author: tocic <tocic@protonmail.ch>
Date:   Fri Apr 7 13:57:28 2023 +0300

    [diff.cpp17.depr] Fix inconsistent hyphenation of "well-defined"

commit 57ad77984fd2e07c90b1bb8ca34125452688031a
Author: tocic <tocic@protonmail.ch>
Date:   Fri Apr 7 13:51:09 2023 +0300

    [fs.path.type.cvt] Fix inconsistent hyphenation of "error-prone"

commit e16a651b7d6f490e9ffe003c9ca382970c478c1d
Author: tocic <tocic@protonmail.ch>
Date:   Fri Apr 7 13:45:39 2023 +0300

    [filesystems] Fix inconsistent hyphenation of "subdirectory"

commit f52423c2a4d60d0ad653a3c8e2895037df016db0
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sun Apr 30 14:07:51 2023 +0100

    [format.string.std] Clarify how an integer is interpreted

commit 62d7d5a2e51d63d676cc93bfe69d4d55ea635983
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sun Apr 30 14:15:35 2023 +0100

    [class.{default,copy}.ctor] Use new term "constexpr-suitable".

    As of CWG2602 (ce7d8b0360e1509de6f7fd073d0a091238b1326f), the term
    "constexpr-suitable" replaces the previous phrase "satisfy the
    requirements for a constexpr function".

commit 696ddeb2b28b48efaffa93b881ff667d85d0a457
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sun Apr 30 14:22:32 2023 +0100

    [time.duration.general] Use new term "constexpr-suitable".

commit 79aef51943810dcf14654490fb6101bbc9e4a0f9
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sun Apr 30 14:23:05 2023 +0100

    [pairs.pair, variant.ctor, tuple.cnstr] Use new term "constexpr-suitable".

commit b6903b6fe23d06e23191e672ae287f0de0de472c
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon May 1 09:47:08 2023 +0200

    [cpp.predefined] Add __cpp_auto_cast

commit 8f946881355fbbe031a325168078b2925e029bba
Author: xmh0511 <970252187@qq.com>
Date:   Tue May 2 01:31:02 2023 +0800

    [temp.variadic] Change "init-capture pack" to "init-capture pack declaration"

commit b81e4be37c5f7a4d374546a72bfc82c96601aee2
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Fri May 5 12:01:05 2023 +0100

    [container.alloc.reqmts] Fix incorrect change of \mandates to \expects

    This was incorrectly changed from a \mandates to an \expects when
    93ff092d1cd2b335f372b9546365b3d495caf2d8 replaced the requirements

commit 7003252f4db8b388dd097790b374ffed3be1ff56
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Sun May 7 16:27:19 2023 -0400

    [flat.map.cons] Close an angle bracket (#6245)

commit e7492cef7f930089e009913bff6ac30f41d6165e
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat May 6 02:47:07 2023 +0100

    [format] Fix presentation of whitespace; use \caret

commit f8f5b8b564a785297a43b6b823b521e5adc79fb9
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Mon May 8 14:30:31 2023 -0400

    [flat.map.modifiers] "Arg..." should be "Args..." (#6249)

commit 02545c761c7f6c9e336c6badf8660b2baf4ac627
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Tue May 9 13:25:42 2023 -0400

    [flat.set.modifiers] `(first, last)` should be `rg` (#6246)

    Restore consistency with [flat.map.modifiers]/13, which already uses `ranges::distance(rg)`.