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

Date: 2021-06-18

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, and special thanks to Johel Ernesto Guerrero Peña for providing in-depth review of most of the draft motion applications.

New papers

Motions incorporated into working draft

Core working group polls

CWG poll 1: Accept as Defect Reports all issues in P2386R0 (Core Language Working Group “ready” Issues for the June, 2021 meeting) and apply the proposed resolutions to the C++ working paper.

CWG poll 2: Apply the changes in P1938R3 (if consteval) to the C++ working paper.

CWG poll 3: Apply the changes in P2186R2 (Removing Garbage Collection Support) to the C++ working paper.

CWG poll 4: Accept P1949R7 (C++ Identifier Syntax using Unicode Standard Annex 31) as a Defect Report and apply the changes therein to the C++ working paper.

CWG poll 5: Accept P2156R1 (Allow Duplicate Attributes) as a Defect Report and apply the changes therein to the C++ working paper.

CWG poll 6: Apply the changes in P1401R5 (Narrowing contextual conversions to bool) to the C++ working paper.

CWG poll 7: Apply the changes in P2223R2 (Trimming whitespaces before line splicing) to the C++ working paper.

CWG poll 8: Apply the changes in P1847R4 (Make declaration order layout mandated) to the C++ working paper.

CWG poll 9: Apply the changes in P2201R1 (Mixed string literal concatenation) to the C++ working paper.

Library working group polls

LWG polls 1 and 2 appertain to the Concurrency TS, not the C++ working paper.

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

LWG poll 4: Apply the changes in P1132R7 P1132R8 (out_ptr - a scalable output pointer abstraction) to the C++ working paper. See below for a change of paper.

LWG poll 5: Apply the changes in P1328R1 (Making std::type_info::operator== constexpr) to the C++ working paper.

LWG poll 6: Apply the changes in P0448R4 (A strstream replacement using span as buffer) to the C++ working paper.

LWG poll 7: Apply the changes in P1425R4 (Iterators pair constructors for stack and queue) to the C++ working paper.

LWG poll 8: Apply the changes in P1518R2 (Stop overconstraining allocators in container deduction guides) to the C++ working paper.

LWG poll 9: Apply the changes in P0401R6 (Providing size feedback in the Allocator interface) to the C++ working paper.

LWG poll 10: Apply the changes in P1659R3 (starts_with and ends_with) to the C++ working paper.

LWG poll 11: Apply the changes in P1951R1 (Default Arguments for pair's Forwarding Constructor) to the C++ working paper.

LWG poll 12: Apply the changes in P1989R2 (Range constructor for std::string_view 2: Constrain Harder) to the C++ working paper.

LWG poll 13: Apply the changes in P2136R3 (invoke_r) to the C++ working paper.

LWG poll 14: Apply the changes in P2166R1 (A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr) to the C++ working paper.

Note: The remaining changes are to be considered defects against C++20.

LWG poll 15: Apply the changes in P2231R1 (Missing constexpr in std::optional and std::variant) to the C++ working paper, as a defect report for C++20.

LWG poll 16: Apply the changes in P2216R3 (std::format improvements) to the C++ working paper, as a defect report for C++20.

LWG poll 17: Apply the changes in P2281R1 (Clarifying range adaptor objects) to the C++ working paper. This resolves LWG issues 3509 and 3510.

LWG poll 18: Apply the changes in P2328R1 (join_view should join all views of ranges) to the C++ working paper, as a defect report for C++20.

LWG poll 19: Apply the changes in P2325R3 (Views should not be required to be default constructible) to the C++ working paper, as a defect report for C++20.

LWG poll 20: Apply the changes in P2210R2 (Superior String Splitting) to the C++ working paper, as a defect report for C++20.

LWG poll 21: Apply the changes in P2367R0 (Remove misuses of list-initialization from Clause 24) to the C++ working paper, as a defect report for C++20.

Editorial fixes

Changes to motions

Minor editorial changes

A log of editorial fixes made to the working draft since N4885 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 7faee4ca019296fd2572df324dcae70ac495e6e4
Author: cor3ntin <corentinjabot@gmail.com>
Date:   Sat Apr 10 10:45:20 2021 +0200

    [std] Spell "whitespace" consistently (#4557)

    Unify the spellings "whitespace", white-space", and "white space"
    by using "whitespace" consistently.

commit 34d0392e2f32ea19aebab4919a525a3a9679594f
Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
Date:   Fri Apr 16 20:39:04 2021 +0300

    [intro.object] Turn non-normative wording into a Note (#4490)

    Remove incorrect wording.

commit f9dac664a11e438ea0dd803f3e5af5675e9fce0a
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Apr 2 12:09:52 2021 +0200

    [ranges.syn] Add primary templates for tuple-like protocol

    The primary templates tuple_size and tuple_element
    are partially specialized, and should be declared
    before doing so.

commit 7f7700143accb1447e193ed8f64b4ebe5efab215
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Mar 27 14:10:47 2021 +0100

    [except.spec] Clarify potentially-throwing functions

    Expressions are potentially-throwing; functions have a
    potentially-throwing exception specification.

commit a1d8bc1e81ba0b1570c53879bad41536648ae916
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Mar 26 23:03:53 2021 +0100

    [format.context] Rephrase recommended practice

commit 5e3a688fb6ffd88c099e54172899c08364a7dada
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Mar 19 08:54:57 2021 +0100

    [except.ctor] Remove false claim about automatic objects

    CWG1774 clarified that partially-constructed objects may not be of
    automatic storage duration. CWG2256 re-introduced that false
    claim.

commit a912904092fcf3af0bdc17c394971f07a899e7d9
Author: Vlad Serebrennikov <brainvlad@gmail.com>
Date:   Fri Apr 30 19:27:56 2021 +0300

    [lex.string] Change "string-literal" to "string literal object" (#4549)

commit e6e47706cb21496031dddaffdece2c5ff5f5e960
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun May 2 12:17:40 2021 +0200

    [template.bitset.general,bitset.members] Use injected-class-name

commit 95ff48305153edf3af4b136eff48f93ea68867d0
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun May 2 12:21:17 2021 +0200

    [bitset.operators] Add missing template-head for operator functions

commit eeeb27394f8fd4c9cf38d3071338de17759c859e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun May 2 16:43:22 2021 +0200

    [forward.list] Rename stable label from [forwardlist]

    This makes the labels consistent.

commit 7e0beb7c3aacbd53fee0450196a12d2b8fdd6f5d
Author: morinmorin <mimomorin@gmail.com>
Date:   Wed May 19 04:26:19 2021 +0900

    [tuple.elem] Replace "member variables" with "non-static data members" (#4602)

commit fc0e8902effe4cb195bb05eb62311a9eb0aea384
Author: timsong-cpp <rs2740@gmail.com>
Date:   Thu May 20 15:21:09 2021 -0500

    [range.elements.sentinel] Correct return type of operator- (#4603)

    This is a missed edit from LWG3406.

commit 6fbc8df1b99e49a015bdc976a83044be0cc1344f
Author: birbacher <frank.birbacher@gmail.com>
Date:   Fri May 21 18:28:01 2021 +0200

    [vector.bool] Remove top-level const from parameter declaration (#4608)

commit 046c4d349ab4f0630d586b5143c2d313ec820dac
Author: Jason Cobb <jason.e.cobb@gmail.com>
Date:   Fri May 21 14:24:26 2021 -0400

    [expr.static.cast] fix wording for static_cast from pointer to base to pointer to derived (#4605)

commit 7789f707ec229fe16329fa890e28bd14eb85bd18
Author: Casey Carter <Casey@Carter.net>
Date:   Fri May 21 12:09:35 2021 -0700

    [vector.bool] reference has multiple assignment operators (#4607)

commit ab87501552f7ed46b542543d0e8536cc7f52d4bb
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Feb 5 22:17:12 2021 +0100

    [defns.well.formed] Fix definition of 'well-formed'

commit 9b76d32e926b98cee1e9aa9556c660b4fd23c47b
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Tue May 25 14:59:51 2021 +0100

    [list.ops] Fix name of parameter in list::unique effects

commit b7c06451fd87eea847613e83ca5316b2a4d072fb
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat May 29 08:53:46 2021 +0200

    [temp.over.link] Add missing \grammarterm marker (#4609)

commit d006a0db172f63fb4a07704bad3b2237f990e4f2
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Oct 8 10:17:43 2020 +0100

    [rand.eng.sub] drop no-op modulo operation

    The e() mod 2^32 operation is a no-op, because e.max() < 2^32.

commit 337c7dbd0a3680ae146db21e1735433e53b6657e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Nov 5 00:25:11 2020 +0100

    [expr] Use 'qualification-combined' and 'qualification-decomposition'

    The previous names 'cv-combined' and 'cv-decomposition' are
    no longer adequate since a qualification conversion can now
    convert to an array of unknown bounds.

commit 1bc43817ce3caef3ed68cbc92046e2bc2738e335
Author: Stephan T. Lavavej <stl@nuwen.net>
Date:   Sat May 29 02:59:05 2021 -0700

    [time.clock.cast.sys],[time.clock.cast.utc] Use Duration2 for clarity. (#4565)

    [time.clock.cast.sys],[time.clock.cast.utc] Use Duration2 for clarity.

commit 4a2546a1857f7b55eab395589893bdd0999956b2
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Apr 21 23:23:30 2021 +0200

    [expr.await] Clarify rethrowing exceptions from await-suspend

commit 72855b062397efdbd30ec5d8c88317d19e27776b
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Apr 2 12:23:30 2021 +0200

    [dcl.init.aggr] An initializer list is brace-enclosed

    Do not claim that a designated-initializer-list or
    an initializer-list is an initializer list.

commit 93d7a96979ff071b76dc211fd4625654b94e8a67
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Jan 14 12:20:20 2021 +0100

    [basic.lookup.unqual] Add examples for conversion-function-ids

commit 890b339661891896ee60d28f19be79ecda4d6296
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Mar 27 13:16:52 2021 +0100

    [namespace.def.general] Clarify inline namespaces

    Highlight 'innermost enclosing' namespace.

commit d6d36b48e5c5b8a63e4b93c2f75aa4f9f1e4862b
Author: timsong-cpp <rs2740@gmail.com>
Date:   Sat May 29 19:26:10 2021 -0500

    [range.elements.overview] Correct example

commit b0a253cc6ba0e7f556f5afefab94f7cc1d1e5ced
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Jun 1 12:56:45 2021 +0100

    [expr.const.cast] Fix punctuation placement.

commit caf7428fd6c807f30538042cf9bf1b27b8772b01
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Jun 3 09:53:27 2021 +0200

    [ranges] Rename 'not-same-as' to 'different-from'.

    'not-same-as' is not quite equivalent to 'not same_as'.

commit fb3bea889899c5ea5c0f70b12fc72129f7d1692a
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Tue Jun 1 22:39:52 2021 +0200

    [expr] Add cross-references for 'local entity'.

    A local entity is not any entity that is local, so add
    cross-references for clarification.

commit 77d389ffccb7c7ba294834d3196a5bccf25d28e0
Author: timsong-cpp <rs2740@gmail.com>
Date:   Mon Jun 7 12:53:22 2021 -0500

    [ranges] Use views::meow in examples instead of meow_view

commit e03d76cb5067598a92105ad7c4841a3d18e5b5d0
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Jun 11 22:42:33 2021 +0200

    [fs.path.native.obs] Remove bogus note.

commit 20b924987e59d087af7b28df33490d34466f688c
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Fri Jun 4 12:32:04 2021 +0100

    [range.prim.data] Use ranges::begin(t) not ranges::begin(E)

    This is consistent with the typo fixes for ranges::size done in
    aa9c660a835540117123617a13b0ba1ab6dd801e as part of #3752.

commit e9e2acb4cdff00236aa750c717e1951c655797df
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Jun 17 22:40:23 2021 +0200

    [format.syn] Remove extraneous commas in vformat_to declarations (#4705)

commit d3fbad184abd1c327dd2dd097cd3caa17ada48af
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Apr 2 21:55:37 2021 +0200

    [basic.stc.static] Rephrase the definition of 'static storage duration'

    This clarifies and centralizes the definition and
    also avoids the undefined term 'local variable'.

commit b6e0848db7a72560a7bfc84f16bd23abf6aab2d6
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Jun 4 00:15:46 2021 +0200

    [class.pre] Fix incorrect comment in example

commit 1e889e06856a17f48e32a03a4272502dd67e1035
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Jun 18 19:07:50 2021 +0200

    [temp.variadic] Rearrange description of pack expansion (#4543)

commit 94340ede298a23927523ee28c1c04090416eb20d
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Fri Jun 18 15:00:48 2021 +0100

    [basic.string.general], [string.view.template.general] remove constexpr

    There is no reason to declare a deleted function constexpr.

commit 472e865817e17620ae4c88fef10e2983884b9f77
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Jun 18 22:26:14 2021 +0100

    [range.utility.helper] Add missing '='

commit 421a2e258e2848016df92939f5a1cfa865c7f795
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Jun 18 23:06:52 2021 +0100

    [range.join.iterator] Add missing \tcode