N4886 Editors' Report -- Programming Languages -- C++

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


Many thanks to Casey Carter, Davis Herring, and Jonathan Wakely for checking the correctness of several editorial changes.

Thanks to all those who have submitted editorial issues and to those who have provided pull requests with fixes, and to Johel Ernesto Guerrero Peña in particular for many valuable contributions.

New papers

Motions incorporated into working draft

Core working group polls

CWG poll 1: Accept as Defect Reports the the following issues (all issues resolved by P1787R6 (Declarations and where to find them), adopted at the November, 2020 meeting): 36, 110, 138, 191, 255, 271, 279, 338, 360, 386, 399, 405, 418, 536, 554, 562, 563, 600, 607, 852, 952, 1028, 1200, 1252, 1291, 1478, 1500, 1616, 1729, 1771, 1818, 1820, 1821, 1822, 1828, 1829, 1835, 1837, 1839, 1841, 1884, 1894, 1896, 1898, 1900, 1907, 1908, 1936, 2007, 2009, 2058, 2062, 2065, 2070, 2165, 2199, 2213, 2331, 2370, 2396, 2413

This poll did not result in any modifications to the Working Draft. It only updates the status of the affected CWG issues. The Working Draft had already be updated by the application of P1787R6 after the previous meeting.

CWG poll 2: Accept as Defect Reports all issues in P2313R0 (Core Language Working Group "tentatively ready" Issues for the February, 2021 meeting) and apply the proposed resolutions to the C++ working paper.

CWG poll 3: Apply the changes in P1102R2 (Down with ()!) to the C++ working paper.

Library working group polls

LWG poll 1: Apply the changes for all Tentatively Ready issues in P2315R0 (C++ Standard Library Issues to be moved in Virtual Plenary, Feb. 2021) to the C++ working paper.

LWG poll 2: Apply the changes in P2259R1 (Repairing input range adaptors and counted_iterator) to the C++ working paper.

LWG poll 3: Apply the changes in P2212R2 (Relax Requirements for time_point::clock) to the C++ working paper.

LWG poll 4: Apply the changes in P2162R2 (Inheriting from std::variant) to the C++ working paper.

LWG poll 5: Apply the changes in P2160R1 (Locks lock lockables) to the C++ working paper.

LWG poll 6: Apply the changes in P2017R1 (Conditionally borrowed ranges) to the C++ working paper.

LWG poll 7: Apply the changes in P1682R2 (std::to_underlying for enumerations) to the C++ working paper.

LWG poll 8 did not have consensus.

Editorial fixes

Changes to motions

Minor editorial changes

A log of editorial fixes made to the working draft since N4878 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 7dec24a3adcda671751140407f91d0802142013b
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Fri Dec 18 20:16:07 2020 +0800

    [stacktrace.entry.overview] Italicize 'implementation-defined' in code block (#4421)

commit e93b1868df751014c4f21c6b265823dcc7e51c69
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Fri Dec 18 20:24:10 2020 +0800

    [basic.lookup.qual.general] Add \tcode around N::B<0> (#4422)

commit bc7bfc8480fa1056e8a4bc1de9e841f82e662531
Author: Eelis <github.com@contacts.eelis.net>
Date:   Sat Dec 26 17:30:41 2020 +0100

    [stacktrace.syn] Add header index entry for <stacktrace>. (#4434)

commit adaa5cb85cb950f0d09f3ac7eff239576a6a6bcc
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Mon Dec 28 15:05:09 2020 -0400

    [temp.explicit] Typo fix: remove extraneous x (#4439)

commit d4c03ca423220c1f26aa718712ba6083f421e2ce
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Tue Dec 29 19:18:56 2020 -0400

    [system.error.syn] Add dropped word (#4440)

commit a864d2fae82c7a7c7a23121969d4da743c1c25ae
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Dec 18 21:16:31 2020 +0100

    [localization] Reformat LaTeX source code.

    Also add two missing periods and remove one instance
    of superfluous whitespace.

commit 0162e808fccd74cffe663104f284f08e1efb65d1
Author: Christof Meerwald <cmeerw@cmeerw.org>
Date:   Thu Jan 14 19:14:33 2021 +0100

    [over.match.conv] add missing "can" (#4461)

    The word "can" seems to have been accidentally dropped when applying P1787R6.

commit a8e2d0d30cab31a47a238603f9636e1d567fda3e
Author: Hubert Tong <hubert-reinterpretcast@users.noreply.github.com>
Date:   Thu Jan 14 13:17:16 2021 -0500

    [expr.prim.req.type] Clarify example comment re: validity of name only (#4457)

    The comment that a class template specialization is required can be
    taken as meaning that more is required than the validity of the
    template-id (which is all that the requirement really checks).

    Additionally, the specific implications of the validity requirement is
    spelled out.

    Co-authored-by: Hubert Tong <hstong@ca.ibm.com>

commit 803511eb0815cee73167c8a85b78ca046fc3e7c6
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Jan 4 22:15:58 2021 +0100

    [over.match.viable, over.match.best.general] Use math mode, not \textit

commit 7c5edb431df8ef4bc52e5297e5d54bc188967b8c
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Jan 14 19:23:50 2021 +0100

    [fs.op.funcs] Qualify declarator-id with sub-namespace (#4459)

commit 82821f2ef3e408b2a2e6b61b8de2342695b0dc42
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Jan 4 21:39:47 2021 +0100

    [thread.condition.general] Fix style of quotation marks

commit da00c98ed9f4052e0205ce9079fa6a9dc527bc8b
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Jan 3 22:16:08 2021 +0100

    [lib] Ensure non-member swap is declared in the header synopsis only

commit f5380e66f3e60953388189c98472517344777be0
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Jan 14 23:30:51 2021 +0100

    [ranges] Improve concept index (#4456)

commit 134d5f048a28a533e1ec45c45a289f1976b62232
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Jan 3 22:37:01 2021 +0100

    [lib] Use 'specialization' instead of 'instance'

commit 836cc23f44e1c5b44376e75f2964f78f0f8b2a9b
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Jan 15 13:10:45 2021 +0100

    [concepts.equality] Turn 'e.g.' into a proper example (#4442)

commit d35605c14368a3418a999ca6aaf31627a79e14fb
Author: Hubert Tong <hstong@ca.ibm.com>
Date:   Sat Jan 2 22:21:44 2021 -0500

    [over.built] Correct note re: "hiding" to match over.match.oper/3

    The note in [over.built] uses "hidden" to describe how built-in
    candidates are removed from consideration; however, this is not
    hiding in the sense of name lookup. This PR removes the bad
    terminology and also corrects the note to defer to the normative
    text regarding the conditions upon user-written candidates that
    suppress built-in candidates.

commit 7b197155b61c6ddd63386f915adbfb59258de89c
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Fri Jan 15 09:40:58 2021 -0400

    [range.iota.iterator,range.iota.sentinel] Add missing requires-clauses on out-of-class member definitions (#4426)

    These additional clauses were accidentally omitted from LWG3292, but should have been part of that issue's resolution.

commit f81e3a820461cd5917448d9ec2519bdd0e6adb91
Author: frederick-vs-ja <de34@live.cn>
Date:   Thu Jan 28 05:14:25 2021 +0800

    [stacktrace.basic.overview] Add missing "namespace std {" (#4469)

commit afd12f1de36eb0b47292c179d573ee797611d359
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Jan 30 15:53:02 2021 -0400

    [iterator.concept.winc] Index implementation-defined integer-class type (#4470)

    Also fix a typo.

commit 1aee0cad91184b6f4d4938ba0e8597e0fc644342
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Mon Feb 1 07:04:38 2021 -0400

    [lib] Change 'expression inside noexcept' to 'exception specification' (#4105)

    * [lib] 'expression inside noexcept' -> 'exception specification'

commit 4030cfc62ea51a02d884f170d92c4d0149977c02
Author: lam-work-group <77063444+lam-work-group@users.noreply.github.com>
Date:   Tue Jan 26 15:30:41 2021 +0800

    [stacktrace.basic.cmp] Update 'lexicographical_compare_3way'

    P1614R2 changed the name to 'lexicographical_compare_three_way'.

commit be7b0a691b5414996fd0531e15a556a49fc982b6
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Jan 3 21:19:24 2021 +0100

    [index] Add missing implementation-defined types

commit e429dfc01ed44cb3dd5f6095c74a759aebdb00c4
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Dec 27 23:41:52 2020 +0100

    [library.general] Adjust order according to recent clause reorganizations.

commit 81a911dfb70f0d2f0450592ca49ebd05056e86e1
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Dec 30 22:17:24 2020 +0100

    [range.dangling] Split up overly long sentence.

commit 22789a0312a773c7ec77dd6a6b9c1f39a3a4634e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Feb 4 17:50:26 2021 +0100

    [format.arg] Fix return type of visit_format_arg

    It was specified as 'see below', pointing nowhere.
    Use 'decltype(auto)', congruent with the Effects item.

commit 065df74900d3bd2e1dbdec105de4e3742e059eda
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Mon Feb 15 06:17:20 2021 -0400

    [README] Update requirements for "Getting Started" on Arch Linux (#4496)

commit 0a107ed35ef44becc00dea9329f6a7da6e0be98a
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Mon Feb 15 06:21:34 2021 -0400

    [func.bind.front] Use a more conventional introduction (#4488)

commit 3510342f18537f4b1feac191ec6e7fce649f5014
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Feb 15 11:23:05 2021 +0100

    [stmt.pre] Excise undefined term 'contained' (#4485)

commit 80c5fdf17341121464360e953039bd03a9aa3a0f
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Feb 5 21:41:05 2021 +0100

    [dcl.init.general] Fix misapplied term 'block variable'

    Block-scope externs are in view here, but those are not
    block variables, because their target scope is an
    enclosing namespace scope.

commit 7620db718df1ff82c2468b75f3449ced8ad7b716
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Feb 5 22:02:04 2021 +0100

    [lib] Use 'tm', not 'struct tm'

    Using the elaborated-type-specifier implies that this type
    is declared in namespace 'std', which might not be true.

commit 5494117ea39b36ce3e590025943a8ff48e78b4d3
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Feb 18 17:39:13 2021 +0100

    [container.requirements] Use bulleted lists to introduce identifiers

commit 70da127291269dbda3f1cad7cb34936cf0bdbcf1
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Mon Feb 22 05:26:52 2021 -0500

    [vector.bool] Remove an extra closing parenthesis (#4501)

commit 825255f7c3be12b4807c6df4c1183632d973cf53
Author: Marek Kurdej <mkurdej@users.noreply.github.com>
Date:   Mon Feb 22 19:58:47 2021 +0100

    [stdatomic.h.syn] Add semicolons in using-declarations (#4502)

commit cddc112f2b4baa4ce8cc97c60aa04276fd86afc5
Author: Casey Carter <Casey@Carter.net>
Date:   Tue Feb 23 12:08:32 2021 -0800

    [range.iota.iterator,range.iota.sentinel] Fix markup around \libconcept (#4503)

    ...so it doesn't appear in the rendered text.

commit 14952c5e7f742f89c233bc13be05f4825d54db17
Author: Dawn Perchik <dawn@brightsidecomputing.com>
Date:   Thu Feb 25 03:08:34 2021 -0800

    [std] Fixes for library concepts that should be \libconcept'd.

commit 1f854d8f83e4eb7d672aa224aabd882e1a70241d
Author: Christopher Di Bella <cjdb@google.com>
Date:   Mon Mar 1 10:30:31 2021 -0800

    [optional.ctor] Add missing \tcode around 'true' (#4534)

commit 066bb6b3acd61761cccb639b191429b95271dbb8
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Dec 3 19:56:30 2020 +0100

    [cpp.import] Clarify header units as the source of macro definitions.

commit e8240fbde651d690f2e01b5770494e3d9189dca6
Author: MattStephanson <68978048+MattStephanson@users.noreply.github.com>
Date:   Sun Mar 7 00:29:30 2021 -0800

    [time.syn] add constexpr to leap_second comparisons (#4539)

commit 2fdafbee15266047133d714e031468be47affe95
Author: Casey Carter <Casey@Carter.net>
Date:   Fri Mar 12 15:29:26 2021 -0800

    [ranges.syn] Don't constrain specializations of enable_borrowed_range (#4519)

    These constraints redundantly repeat the constraints from the template we're partially specializing for. This isn't incorrect, but it is unnecessary, adds opportunities for editorial errors, and is inconsistent with how other partial specializations of templates for constrained types are specified.

commit dfbc9e657ade9674274b6b234ee28f57a7259136
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Oct 30 09:07:03 2020 +0100

    [conv.rank] Avoid 'shall' for plain descriptions.

commit ebdeb7e99223639d24934b7f00be315e1d9288b7
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Jan 3 20:58:05 2021 +0100

    [floatfield.manip] Rephrase note about ios_base::hex

commit ce7e6bfaef0e2350e90e5c26154c9cfa59900c4f
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Jan 4 00:12:38 2021 +0100

    [range.split.outer] Clarify scope of exposition-only 'current'

commit 55c36ec3684a02cb39b232bc34b4a7d22c0a874b
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Mon Dec 28 02:23:27 2020 -0400

    [unord.hash] Remove redundant wording

commit f6d7b014f5b50850ccd3fd31127917ad44309634
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Feb 6 22:04:39 2021 +0100

    [temp.expl.spec] Use 'reachable from', not 'declared before'

    With modules, 'declared before' no longer makes sense.

commit ce0db1e1515aedee533a53145d76d9e5495f6f00
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Mar 15 14:00:53 2021 +0100

    [cmp.alg] Clarify that ill-formed CPO invocations are SFINAE-friendly (#4494)

commit 6dbc76a0935998443d0a28b962d86649c56b27f4
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Fri Jan 29 15:40:10 2021 -0400

    [lib] Index all uses of public concepts

commit 0b3d8ed6e8a70bedeb0ca161f1a6121cb769266b
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Mon Mar 15 21:15:17 2021 +0800

    [stacktrace.entry.query] Fix description of `source_line` (#4481)

    This fixes a misapplication of P0881R7.

commit fab6f7f0d05b081cf183d1d56811f101ba6c89e6
Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
Date:   Mon Mar 15 23:45:41 2021 +0300

    [dcl.fct] Integrate return type requirements from [expr.call] and simplify them (#4113)

    There is a general prohibition against arrays of function type in [dcl.array].
    There is no need to highlight some specific permitted types; it is sufficient
    to state the general rule.

commit 793eb7be096f76dcdf71dde1238ad24ed1c9e13e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Mar 15 22:53:55 2021 +0100

    [dcl.pre] Reorder paragraphs (#4462)

    Group discussion of simple-declaration and
    move other kinds of declarations to the end.

commit e66bf8fa69e2d0e7c5314a7720cdd9e9e63421db
Author: Hubert Tong <hstong@ca.ibm.com>
Date:   Mon Apr 20 17:50:13 2020 -0400

    [dcl.fct.def.delete] Make terms cover semantic deletedness

    The definition of "deleted definition" in [dcl.fct.def.delete] is not
    written in the form of a definition and neither is the definition of
    "deleted function". Most problematically, these definitions encompass
    only the syntactic case of explicitly deleting a function but the terms
    are used where semantic deletedness is meant.

    Applying the syntactic interpretation of the definition could lead to
    the conclusion that the following is ill-formed:
    struct A { ~A() = delete; };
    struct B {
      A a;
      virtual ~B() = default;
    struct C : B { virtual ~C() = delete; };

    This patch changes the definitions to cover semantic deletion.

    **Drafting notes:**

    - It appears that uses of "deleted definition" in the text is usually
      refer to physical definitions (but not necessarily to explicit
    - The increased verbosity is somewhat necessary to meet the ideal that
      uses of a term may be replaced with the definition of the term with
      minimal adjustments.

commit 44e3c7fb3e88e45738926d652ed6a78c1df6619b
Author: Casey Carter <cacarter@microsoft.com>
Date:   Tue Mar 16 13:44:19 2021 -0700

    [range.split.inner] Clarify paragraph 1 (#4545)

    ... to avoid confusion about what it means for a name that is not present to denote a type.