# 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`

## 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

 * [N4950](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/n4950.pdf) is the
   current and final working draft for C++23. It replaces
   [N4944](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/n4944.pdf), and it
   forms the basis of the Draft International Standard for C++23.
 * N4951 is this Editors' Report.
 * The next working draft will be for C++26.

### 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](https://github.com/cplusplus/draft/compare/n4944...n4950).

    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
        tables.

    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)`.
