diff --git a/papers/n4893.html b/papers/n4893.html new file mode 100644 index 0000000000..4199ee04d2 --- /dev/null +++ b/papers/n4893.html @@ -0,0 +1,625 @@ + +
+ +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
+
diff --git a/papers/n4893.md b/papers/n4893.md
new file mode 100644
index 0000000000..613dafaab0
--- /dev/null
+++ b/papers/n4893.md
@@ -0,0 +1,493 @@
+# 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](https://github.com/cplusplus/draft/wiki/How-to-submit-an-editorial-issue)
+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
+
+ * [N4892](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4892.pdf) is the
+ current working draft for C++23. It replaces
+ [N4885](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4885.pdf).
+ * N4893 is this Editors' Report.
+
+## 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