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
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.
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.
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.
Poll CWG-3: A few further minor mentions and references to pointer safety have also been removed, as has the Annex C entry.
Poll CWG-4: References to URLs have been reworded very slightly to be consistent with existing references (“available from:” instead of “available at”). Subclause headings in the new Annex have been changed from title case to sentence case. This is also the first motion create a new Annex C entry, so the new Annex C section for C++20 has been created as part of this change.
Poll LWG-4: An updated paper P1132R8 containing several editorial corrections had been produced prior to the meeting, but the motions list had inadvertently not been updated. It was made clear to WG21 that P1132R8 was being polled instead of the obsolete revision P1132R7; the R8 revision has been applied to the working paper.
Poll LWG-12: During review, it was identified that an erroneous R
should
have said remove_reference_t<R>
. This has been corrected, with LWG's
awareness and consent.
Poll LWG-16: The resolution of LWG
3539 that was adopted as part of LWG Poll-3 has been applied to the new
wording of this poll as well, adding std::move
as appropriate.
Poll LWG-19: The wording incorporates changes that were contingent on the adoption of LWG Poll-18.
Poll LWG-20: The resolution of LWG
3533 that was adopted as part of LWG Poll-3 has been applied to the new
wording of this poll as well, changing the type and constraints of base
as
appropriate.
Poll LWG-21: The wording incorporates additional changes to the new wording introduced by LWG Poll-20.
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