diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
index 45b4a1b4fc..2c1415675c 100644
--- a/.github/workflows/check.yml
+++ b/.github/workflows/check.yml
@@ -2,12 +2,11 @@
name: check
-on:
- pull_request:
- push:
+on: [pull_request, push]
defaults:
run:
+ shell: bash
working-directory: source
jobs:
@@ -16,18 +15,25 @@ jobs:
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v2
- - name: check-source
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - name: check-source.sh
run: ../tools/check-source.sh
+
- name: update-apt-cache
run: sudo apt-get update
+
- name: install
run: sudo apt-get install latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended lmodern
+
- name: make
run: make quiet
- - name: check-output
+
+ - name: check-output.sh
run: ../tools/check-output.sh
- - name: upload pdf
+
+ - name: upload PDF
uses: actions/upload-artifact@v2
with:
name: draft-snapshot
diff --git a/papers/n4911.html b/papers/n4911.html
new file mode 100644
index 0000000000..11b62cf3a1
--- /dev/null
+++ b/papers/n4911.html
@@ -0,0 +1,1027 @@
+
+
+
+
+
+N4911
+
+
+N4911 Editors' Report -- Programming Languages -- C++
+
+Date: 2022-03-17
+
+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
+
+
+- N4910 is the
+current working draft for C++23. It replaces
+N4901.
+- N4911 is this Editors' Report.
+
+
+Motions incorporated into working draft
+
+Core working group polls
+
+CWG poll 1: Accept as Defect Reports all issues except issue 2502 in
+P2533R0
+(Core Language Working Group "ready" Issues for the February, 2022 meeting) and
+apply the proposed resolutions for all of the issues to the C++ working paper.
+
+CWG poll 2: Apply the changes in
+P2173R1
+(Attributes on Lambda-Expressions) to the C++ Working Paper.
+
+CWG poll 3: Apply the changes in
+P2493R0
+(Missing feature test macros for C++20 core papers) to the C++ Working Paper.
+
+Library working group polls
+
+LWG poll 1: Apply the changes for all Tentatively Ready issues in
+P2531R0 (C++
+Standard Library Issues to be moved in Virtual Plenary, Feb. 2022) to the C++
+working paper.
+
+LWG poll 2: Apply the changes in
+P0323R12
+(std::expected
) to the C++ working paper.
+
+LWG poll 3: Apply the changes in
+P0533R9
+(constexpr for <cmath>
and <cstdlib>
) to the C++ working paper.
+
+LWG poll 4: Apply the changes in
+P0627R6
+(Function to mark unreachable code) to the C++ working paper.
+
+LWG poll 5: Apply the changes in
+P1206R7
+(ranges::to: A function to convert any range to a container) to the C++ working
+paper.
+
+LWG poll 6: Apply the changes in
+P1413R3
+(Deprecate std::aligned_storage
and std::aligned_union
) to the C++ working
+paper.
+
+LWG poll 7: Apply the changes in
+P2255R2 (A
+type trait to detect reference binding to temporary) to the C++ working paper.
+
+LWG poll 8: Apply the changes in
+P2273R3
+(Making std::unique_ptr
constexpr) to the C++ working paper.
+
+LWG poll 9: Apply the changes in
+P2387R3
+(Pipe support for user-defined range adaptors) to the C++ working paper.
+
+LWG poll 10: Apply the changes in
+P2440R1
+(ranges::iota
, ranges::shift_left
and ranges::shift_right
) to the C++
+working paper.
+
+LWG poll 11: Apply the changes in
+P2441R2
+(views::join_with
) to the C++ working paper.
+
+LWG poll 12: Apply the changes in
+P2442R1
+(Windowing range adaptors: views::chunk
and views::slide
) to the C++ working
+paper.
+
+LWG poll 13: Apply the changes in
+P2443R1
+(views::chunk_by
) to the C++ working paper.
+
+Editorial changes
+
+Notes on motions
+
+
+Poll CWG-2: The wording was adjusted to integrate with the new wording
+from issue
+CWG-2509
+to use the new term lambda-specifier-seq instead of the original
+decl-specifier-seq.
+Poll LWG-1: Issue
+LWG-3616
+was skipped, since it had already been applied
+editorially.
+Poll LWG-8: The wording was integrated with the resolution of
+LWG-3632.
+
+
+Clause reorganization
+
+We rearranged several clauses and subclauses. Over the years, the original
+clause structure had been becoming less appropriate for the growing amount of
+content, and we hope that the new structure is more suitable to the current (and
+anticipated future) content.
+
+
+New top-level clause "Memory management library [mem]", after [diagnostics].
+This clause contains <memory>
, memory parts of <cstdlib>
, smart pointers,
+memory resources, and scoped allocators, previously part of [utilities].
+The "Metaprogramming library [meta]" subclause from [utilities] is now a
+new top-level clause, in between [mem] and [utilities]. We expect future
+reflection material to be added to this clause.
+The "Atomic operations [atomics]" clause has been integrated into the
+top-level [thread] clause, which has been renamed to "Concurrency support
+library [thread]".
+"Bit manipulation [bit]" has been moved to the end of the [utilities] clause.
+"Stacktrace [stacktrace]" has been moved to the end of the [diagnostics] clause.
+"String view classes [string.view]" has been moved to immediately before
+[string.classes].
+"Allocation and deallocation functions [class.free]" has been moved to
+immediately before [class.nest].
+
+
+We are aiming to not change the top-level clause structure more than once per
+standard publication cycle. We have had suggestions to create a new top-level
+clause "Text" for text-related content (such as locales and regular expressions,
+but also anticipating new material). We have not yet reached consensus, and we
+will probably perform that reorganization during the C++26 cycle.
+
+Requirements tables
+
+We have begun replacing the large requirements tables in the library with more
+conventional paragraphs, as described in editorial paper
+P2416R2.
+Each requirement is now presented in a style similar to that of function
+declarations, followed by as many specification elements as appropriate. A new
+"Result:" element has been added to capture the type of a type requirement,
+and the type and value category of an expression requirement.
+
+We have applied these changes to the container, allocator, and regular
+expression trait requirements.
+
+Term labels
+
+We have started introducing explicit LaTeX labels for defined terms, and we have
+updated cross references to refer to those term labels instead of the label of
+the subclause that contains the term. This does not change the presentation of
+the reference, but makes it less likely that cross references are invalidated by
+moving text around.
+
+In the future, we might extend this to turn the use of a term into a hyperlink
+to the page on which the term's definition appears.
+
+Minor editorial changes
+
+A log of editorial fixes made to the working draft since N4901 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 04e0ea7074c9b0d0ca939821ce0f575c589df6b7
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Oct 21 23:52:55 2021 +0200
+
+ [pairs.pair] Use T1/T2, not first_type/second_type
+
+commit ed6e1b5da5d13449cf27c878c60e90892289f98a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Oct 23 01:20:31 2021 +0200
+
+ [index] Fix dangling 'see' references
+
+ Also update the automatic check script to prevent
+ further occurrences.
+
+commit 3d1424716844aef59891d770709e19d83b5bea35
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Oct 24 22:05:40 2021 +0200
+
+ [ranges] Remove \expos markers for nested types (#4829)
+
+ An \expos marker should appear only on the first
+ declaration of a name.
+
+commit 741c20794fdc7aec28afcd9e6c52d6d184d2845c
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Oct 26 16:36:39 2021 +0200
+
+ [class.copy.assign] Fix phrasing in note to avoid 'could'. (#4418)
+
+commit f3ab334c789ac89d2f6baf501d60716278cb8fa3
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Jul 4 23:30:42 2021 +0200
+
+ [contents] Add special lookup treatment for swap
+
+commit 280684c7824b6b7f62c003b909ccf3703d82681b
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Mon Nov 8 07:19:14 2021 -0400
+
+ [defs] Update introduction to match ISO Directives (#5096)
+
+ Reference: https://www.iso.org/sites/directives/current/part2/index.xhtml#_idTextAnchor218
+
+commit 1567c481e3ca3c52f80e4a33db0f913ce1392c4d
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Tue Nov 9 09:31:08 2021 +0000
+
+ [intro.refs] Update dated reference to previous POSIX standard
+
+ Fixes #5098
+
+commit c8ec4ab45f58e3a16d8dcb12bd660dd2cf6e936a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 23 17:22:38 2021 +0100
+
+ [refwrap.general] Add cross-references to the class synopsis (#5122)
+
+ Also rename [refwrap.const], because it does not specify
+ any destructors.
+
+commit b4bf594c81865f892bae81342ffb67c8ca8adb74
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 23 17:24:35 2021 +0100
+
+ [smartptr] Rework subclause nesting (#5119)
+
+commit d0cb462d511e5c9bf1ae7403c275f7c1ccf2543d
+Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
+Date: Sat Nov 20 02:16:40 2021 +0800
+
+ [range.adjacent.overview] Fix multi-character in example
+
+commit 26f6a1f7573ea54ed93b4e90d0e487fe39d44b87
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 13 10:01:36 2021 +0100
+
+ [dcl.typedef] Add explanation for lookup failure in example
+
+commit c63e5e836e8dbe0ae6c7ebc1b2a1b1534d37a220
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Nov 10 23:40:48 2021 +0100
+
+ [input.output] Fix headings of 'assign and swap' subclauses
+
+commit d2699e5de0c10085df309074d2dfbc57d5bc86bb
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Oct 27 21:20:02 2021 +0200
+
+ [std] Replace 'OK:' in code comments with 'OK,'
+
+ In contrast to errors, which use a colon, an OK comment
+ is not followed by any unique reason why the code is
+ well-formed, but by a subjective highlighting of a fact.
+
+commit 5e3f1ad0ceb89feb2977a0531422bcbe9ab8fba7
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Oct 26 21:49:15 2021 +0200
+
+ [stdatomic.h.syn] Fix missing \expos
+
+ and augment the autmatic checks accordingly.
+
+commit 16e60c63ad14f3f3fc9132a8443421a15ebec8fc
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 9 13:09:27 2021 +0100
+
+ [locale.time.get] Replace 'ISO/IEC 9945' with 'POSIX'
+
+ We introduce POSIX as an alias for ISO/IEC 9945, and we use 'POSIX'
+ everywhere else.
+
+commit 31c32e035770797eedc69f150c3a3484bbe828a5
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 9 17:54:18 2021 +0100
+
+ [locale.time.get.virtuals] Use 'conversion specification'
+
+ POSIX does not define the term 'conversion directive'.
+
+commit fbab3f13719c34affdb7b712aed7f6d2313570d7
+Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+Date: Tue Nov 23 20:03:13 2021 +0300
+
+ [defns.access, basic.lval] Clarify what can be accessed and how (#4777)
+
+commit 5475bdab828b3585a21172945303ccebbcefb516
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Oct 21 22:11:07 2021 +0200
+
+ [c.mb.wcs] mbrtoc8 stores code units, not characters
+
+commit ba4bb3ee56b94b63d0d1e5914a136a04b1620052
+Author: mordante <koraq@xs4all.nl>
+Date: Tue Nov 23 18:13:22 2021 +0100
+
+ [format.functions] Add "std::move" around "out" (#5069)
+
+ This fixes a misapplication of the resolution of LWG 3539.
+
+commit 0d0ec1a1393b3baae564234007c94b80da9bab48
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Nov 23 18:15:55 2021 +0100
+
+ [func.wrap.{func.general, move.class}] Remove 'first-class object' (#5067)
+
+ The term is undefined and does not improve the specification.
+
+commit d27c3b388befadc4c35aac1d12f0ba8581f14a5f
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Fri Nov 12 14:29:00 2021 +0000
+
+ [spanstream.ctor] Fix base class name in effects
+
+commit c1935504da840995b1bb60eba536cb12bca5ae71
+Author: timsong-cpp <rs2740@gmail.com>
+Date: Tue Nov 23 11:51:37 2021 -0600
+
+ [basic.start.main] Remove redundant phrase (#5083)
+
+commit 70eb0406596b4f4e3d97ed50b3fd6d93b3032d18
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Oct 25 23:57:58 2021 +0200
+
+ [basic.start.main] Avoid implementation guidance in a note
+
+commit ac8d6611a739c64eda4a7062f2cb83f770cd8a53
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Oct 25 23:58:08 2021 +0200
+
+ [dcl.link] Avoid implementation guidance in a note
+
+commit 2ad67aefe350017c4e9403ba2015af683813787f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 6 22:08:47 2021 +0100
+
+ [lex] Remove Unicode character name abbreviations
+
+ They are not part of the character name or alias.
+ The presentation in ISO 10646 is misleading, though.
+
+commit 29c89b16e92cd03a76eb2a19866e683a7bb7ac80
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 6 22:15:05 2021 +0100
+
+ [lex] Rename U+0007 BELL to ALERT
+
+ The former is ambiguous with U+1F514 BELL.
+ The ALERT alias is defined in UCD NameAliases.txt.
+
+commit 408623b7d8f0efd77403d1d0142d9bd59d1cfe55
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Dec 4 11:19:54 2021 +0100
+
+ [associative.reqmts.general] Fix typo: 'kx', not 'rx' (#5136)
+
+commit f03473cd1e32691c105260e65dd534960cf9db21
+Author: Neven Sajko <nsajko@gmail.com>
+Date: Sun Dec 5 21:19:00 2021 +0100
+
+ [over.sub] Fix typo: change oeprator to operator (#5140)
+
+commit c69a35501174f5ab5d3f13f12186cc9b1fcd40dd
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Dec 14 11:24:04 2021 +0100
+
+ [range.access] Fix cross-references for 'array' (#5147)
+
+ Also introduce a label 'term.array.type' in [dcl.array].
+
+commit 7a09dddd036359a10cf10b8e7d80c8edd8c76817
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Dec 16 19:39:18 2021 +0100
+
+ [basic.fundamental] Excise normative requirements on std::numeric_limits (#5105)
+
+commit c2617432eac3313abd2134a26e2d8a1d925dfd15
+Author: Casey Carter <Casey@Carter.net>
+Date: Thu Dec 16 23:53:17 2021 -0800
+
+ [depr.default.allocator] Index allocator::is_always_equal here (#5152)
+
+ LWG3170 deprecated `allocator::is_always_equal`. We moved it to Annex D, but left the index entry behind.
+
+commit 28effaea15ef697f5a64fba47b9c095c9fbfe82a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Dec 19 22:16:18 2021 +0100
+
+ [ptr.align,re.regiter.incr] Replace 'compiler' with 'implementation'
+
+commit 575b9a99062de34cc44bc45aeb459f32aa12b98f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Dec 19 22:19:19 2021 +0100
+
+ [smartptr.adapt] Emphasize that casting might not always be viable
+
+commit 9ba8e0329a0f5db15544c31c514ff44e0003f08f
+Author: frederick-vs-ja <de34@live.cn>
+Date: Tue Jan 11 23:29:26 2022 +0800
+
+ [pairs.pair] Add missing _v for type traits (#5196)
+
+commit dae6769d9767e2e47f2fe451d9c796dd07d0ae29
+Author: zhihaoy <43971430+zhihaoy@users.noreply.github.com>
+Date: Thu Jan 13 14:03:25 2022 -0800
+
+ [func.memfn] Correct target object by fixing typo (#5202)
+
+commit 5f830f97829965cf791dfe6eef6b84d6283712be
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Nov 24 22:04:55 2021 +0100
+
+ [lib] Add 'namespace std' wrappings around class definitions
+
+ Those were missing in a few places, notably [rand].
+
+ Also add an automated check.
+
+commit 1031a409dfacb84b9871b16502c73e15249160eb
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Nov 19 23:02:19 2021 +0100
+
+ [chrono.syn] Use nested namespace definitions for clarity
+
+commit dad631ac4bd30e7ab6de5a888f77ed2b5b44c17d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Nov 6 09:39:55 2021 +0100
+
+ [except.throw,except.handle] Move lvalue specification for copies
+
+commit c6e5eea4f11efec62a4718acd4eb17fb99fd4899
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Oct 25 23:41:31 2021 +0200
+
+ [expr.prim.req.general] Change requirement-seq to right-recursive
+
+ consistent with the specification of other -seq non-terminals.
+
+commit 872fce6effc603735c9717981807eb6bb8b4f838
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Dec 4 11:33:32 2021 +0100
+
+ [associative.reqmts.general] Fix confusing local use of 'r'
+
+commit 3d1bf58b74860fc1e86cd1cf536b7022b90d688d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jan 7 20:26:15 2022 +0100
+
+ [temp.res.general] Clarify binding of names
+
+commit 4123264d22c7617d828083c9ad954b5541934621
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Oct 25 18:15:14 2021 +0200
+
+ [temp.constr.atomic] Fix phrasing in note
+
+commit 26ce304780d79bba03a791b2f4299f083f021238
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Dec 14 09:25:41 2021 +0100
+
+ [dcl.meaning.general] Clarify correspondence for block-scope friends
+
+commit 3c19e315dbb05a2c22b8f5b075af39a7572cdaa1
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Dec 23 11:18:17 2021 +0100
+
+ [meta.rel] Avoid undefined term 'void types'
+
+commit 90d178d022c7d597629853ebc70262489e49d5e9
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jan 14 19:46:15 2022 +0100
+
+ [class.default.ctor] Fix implicit invocation of default constructor (#4026)
+
+ Initialization is fully specified in [dcl.init],
+ so turn the list of default-initialization cases
+ into a note and shorten it appropriately.
+
+commit e1bfc25c56c7ab303241f980fa00d7ae402e1f5c
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Jul 5 23:51:41 2021 +0200
+
+ [stmt.return,class.{ctor,dtor}] Clarify no return operand
+
+ Highlight that constructors and destructors do not have a
+ return type and thus a return statement within a constructor
+ or destructor cannot have an operand.
+
+commit b345505b88b376d547220254fd858840efbfb937
+Author: Chuanqi Xu <yedeng.yd@linux.alibaba.com>
+Date: Fri Jan 14 10:10:11 2022 +0800
+
+ [temp.param] Delete outdated wording at p15
+
+ The wording at [temp.param]/15 says:
+ > A template-parameter shall not be given default arguments by two
+ > different declarations if one is reachable from the other.
+
+ But it is conflicted with [basic.def.odr]/13:
+ > There can be more than one definition of a
+ > ...
+ > default template argument
+ > ...
+ > in a program provided that each definition appears in a different
+ > translation unit and the definitions satisfy the [same-meaning
+ > criteria of the ODR].
+
+ [temp.param] should be deleted otherwise we couldn't modularize a real
+ project.
+
+commit fc9818bcdaa08f65c8d99f7df70b418810c36893
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Jan 15 09:43:55 2022 +0100
+
+ [util.smartptr.atomic] Add cross-reference to <memory> header (#5207)
+
+commit 5c59ede65b362afb418bda3cf82123ae2ca2553c
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Dec 23 11:36:39 2021 +0100
+
+ [locale.ctype.virtuals] Clarify do_widen parameter
+
+commit cec2d218209abf2979a3c7fabc9970d8677b9e63
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Dec 23 12:53:01 2021 +0100
+
+ [diff.stmt] Properly refer to function return types
+
+ Also annotate the 'void' and 'int' keywords.
+
+commit ba9124e62ea85c922d501dfc52bc4d44c85933bd
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Fri Jan 21 15:57:58 2022 +0000
+
+ [util.smartptr.atomic.general] Fix cross-reference to shared_ptr (#5222)
+
+commit 3cb2ee9d67360612e6361aa26d1805c8ed30c6e6
+Author: Chuanqi Xu <68680648+ChuanqiXu9@users.noreply.github.com>
+Date: Sat Jan 22 17:43:22 2022 +0800
+
+ [temp.dep.general] add trailing 'or' (#5186)
+
+commit 4e2dbd25fa137f12c8fa6b960bc2db45be994414
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Jan 22 13:38:10 2022 +0100
+
+ [class.free] Move into [class.mem]
+
+ The class-specific allocation and deallocation functions,
+ whose declaration properties are specified in this section,
+ are class member functions.
+
+commit 7987ef93488842bbdbbd6e4de996f463939fe0e8
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Jan 22 13:45:23 2022 +0100
+
+ [class.free] Change subclause heading and add indexing
+
+ Rename the heading to "Allocation and deallocation functions",
+ which is more appropriate for the contents of the subclause.
+
+commit 07db0b3182495339b00221bba41549913e0a6a0e
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Jan 22 14:35:11 2022 +0100
+
+ [stacktrace] Move into [diagnostics]
+
+commit 0df02c99d04dd0e0d29ea520904ea64f69ea6c36
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Jan 20 19:42:09 2022 +0100
+
+ [class.mem.general] Add cross-reference for 'layout-compatible type'
+
+commit 2e5976f894d821e442a6f98c3e235381f8067570
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Jan 20 19:36:15 2022 +0100
+
+ [stmt.return] Clarify flowing off the end of a function
+
+commit 88541f7ad5de85389adb0e88f295091d29f00030
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jan 25 23:12:55 2022 +0100
+
+ [range.req.general] Remove incorrect normative duplication for 'view' (#5235)
+
+commit 0539c5e2cdf7605c5704eb2b63916b6c5c3b9539
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Feb 18 13:42:57 2021 +0100
+
+ [macros,structure.specifications] Add 'Result' element
+
+commit 408a22b1b58207de4af28d59afd20156e715e35f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Jan 7 23:48:43 2021 +0100
+
+ [re.req] Replace requirements table with \itemdescr
+
+commit 93ff092d1cd2b335f372b9546365b3d495caf2d8
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Nov 14 20:05:03 2021 +0100
+
+ [container.requirements] Replace requirements tables with \itemdescr
+
+ and adjust cross-references to container requirements tables
+ throughout the standard library.
+
+commit 4b1a735f393aa5c864d0a5aba45514aec63f5a90
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Jun 27 11:26:39 2021 +0200
+
+ [container.requirements] Omit redundant specification
+
+ where "Effects: Equivalent to" wording is used.
+
+commit d37470de0392f032d96c85610c947918269532a9
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Feb 20 00:09:56 2022 +0100
+
+ [lex.name] Rephrase note to avoid upper/lower-case
+
+commit efd0cab6f2d11f29f205c15672108f6e20de6010
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Feb 20 14:28:36 2022 +0100
+
+ [lib] Add missing \pnum before descriptive elements
+
+ Also fix the ineffective check script by rewriting the
+ check in straightforward awk.
+
+commit ff92c80b70b9cd887512f96e5d5525c20550d12f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Feb 6 09:52:01 2022 +0100
+
+ [iterator.concept.winc] Remove duplicate paragraph
+
+ This fixes a bad merge between P2393R1 Cleaning up integer-class types
+ and P2321R2 zip.
+
+commit a4dfa1f0c46152d3a3399bc32a60fcf11edd4a5d
+Author: Chuanqi Xu <68680648+ChuanqiXu9@users.noreply.github.com>
+Date: Mon Feb 21 07:18:41 2022 +0800
+
+ [module.interface] Add adjective 'exported' (#5290)
+
+ It was clear in context that "the declaration" is exported, but
+ it is easier to understand if we restate "an exported declaration".
+
+commit 90ef396f088a4e1730a3f73f3db44d9ad8b872b7
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Tue Feb 1 13:58:38 2022 +0000
+
+ [fs.class.directory.iterator.general] Fix grammar
+
+commit 1155c4a361c446eee4602b7fd2e82eba7a4f8c4f
+Author: languagelawyer <language.lawyer@gmail.com>
+Date: Sat Jan 22 23:27:49 2022 +0300
+
+ [temp.res] Move a note outside itemize environment
+
+commit 44c79f59de6c4ea179bacc698272d713e696b117
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Jan 29 09:37:59 2022 +0100
+
+ [derivation] Remove 'basic integral type' from footnote
+
+ Also switch footnote to note.
+
+commit 785b0a84e7b0f8108b5140f33494ceff3d0bd282
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Dec 23 11:40:48 2021 +0100
+
+ [diff.expr] Replace 'will' with present tense
+
+ Also annotate the 'void' keyword.
+
+commit 97a72e1c4f1616f2163d34deafea010d68099a7c
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Dec 5 21:22:48 2021 +0100
+
+ [temp.local] Fix type-name interpretation of injected-class-name
+
+commit a8e63922a5f049ab2c58a33117913688b8dc096a
+Author: A. Jiang <de34@live.cn>
+Date: Mon Feb 21 20:27:01 2022 +0800
+
+ [container.gen.reqmts] Replace "Value:" with "Returns:" (#5256)
+
+commit d267cde4fcc2c13ef87170d68f94f1ae6e499c23
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Feb 21 13:51:45 2022 +0100
+
+ [over.best.ics] Clarify phrasing around user-defined conversion sequence (#5086)
+
+ This replaces the use of "with" that is popular in mathematical writing
+ with a more common construction.
+
+commit 7424b45d8470b8765cdf3b25bcfd9a9a89c0c936
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Jan 3 22:24:23 2022 +0100
+
+ [expr] Cleanup for 'discarded-value expression'
+
+commit b5ce71b34217f9d974e96cc366984cbd5f4b71e6
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Dec 17 20:31:57 2021 +0100
+
+ [atomics] Harmonize references to atomics operations tables
+
+commit ef78018c8d61d79dc9cddc5f4b2d00a7929964fa
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jan 21 23:01:25 2022 +0100
+
+ [std] Replace hyphen with period in labels
+
+ and add a check.
+
+commit 58ea575dd9b4a410dcf457b3357bef4a720e1608
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Jan 13 23:21:05 2022 +0100
+
+ [function.objects,ranges] Introduce labels for call wrappers
+
+ In particular, 'term.perfect.forwarding.call.wrapper'
+ and 'term.simple.call.wrapper', and refer to them.
+
+commit 0c53beacef2289e4cc4fabbdff99eb3b6c7ae4ad
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Jul 5 23:16:20 2021 +0200
+
+ [unique.ptr.single] Rephrase destruction
+
+commit 03b9040814ecd548f2de18668df0655ef7b37efb
+Author: S. B. Tam <cpplearner@outlook.com>
+Date: Tue Feb 22 09:39:37 2022 +0800
+
+ [version.syn] Remove mention of nonexistent header `<priority_queue>`
+
+commit 97430e8f867f5b97f79c8064c32dd1bde117198a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Nov 22 22:20:16 2021 +0100
+
+ [allocator.adaptor.members] Fix select_on_container_copy_construction
+
+ The description was confusing objects and types.
+
+commit 2cd31adb2033b4ae82339ef270bc058128cbd199
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Feb 23 22:38:13 2022 +0100
+
+ [bit] Move into [utilities]
+
+commit e3532fd233355f93558f6a53d14b72e16a1f1ed2
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Feb 23 22:44:52 2022 +0100
+
+ [memory] Create new clause
+
+ and move [memory], [smartptr], [mem.res], and [allocator.adaptor]
+ from [utilities] into the new clause.
+
+commit cb7b98d46c4603ccc485fe826fb4363cb2c039bf
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Feb 23 22:48:10 2022 +0100
+
+ [comparisons.three.way,func.search] Add namespace around class definition
+
+commit 1daeb8e44b659c5cdf7133df68def1264c8b5774
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Feb 23 22:54:01 2022 +0100
+
+ Move [string.view] to before [string.classes]
+
+commit 724e83e4d0cd82737952711d31505872188269ab
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Feb 23 23:01:35 2022 +0100
+
+ [meta] Create new clause
+
+ and move [intseq], [meta], and [ratio] from [utilities] into the
+ new clause.
+
+commit af8334b94be2df5bf009ef7381460f56e6224c44
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Feb 23 23:06:45 2022 +0100
+
+ [meta] Adjust cross-references
+
+commit d74c2170a9f4c928519461d7742293af2d141852
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Feb 23 23:19:51 2022 +0100
+
+ Move [atomics] into [thread]
+
+ Rename [thread] to 'Concurrency support library'.
+
+commit 888602381e6c4e5fc886a7e575a95c905998b487
+Author: A. Jiang <de34@live.cn>
+Date: Thu Feb 24 11:35:19 2022 +0800
+
+ [headers] List <expected>
+
+commit aa2c64589cf2a784e9c551a2a54df59b880613d3
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Feb 24 15:09:08 2022 +0100
+
+ [thread] Rename to 'Concurrency support library'
+
+ Missed update with commit d74c2170a9f4c928519461d7742293af2d141852.
+
+commit 000d4c091a244b3bf81470c6c6a4f2f35c3ec602
+Author: hewillk <67143766+hewillk@users.noreply.github.com>
+Date: Fri Feb 25 01:14:48 2022 +0800
+
+ [range.chunk.outer.value] Add missing private specifier
+
+commit 2901f3f6c00060e6c0a368efd28fd50ba07350f1
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Feb 25 23:38:49 2022 +0100
+
+ [diff.cpp20.library] Add subclause, highlighting new headers
+
+commit 1c88b6bdafb2eb128e7da05815f3b30fa52d3710
+Author: hewillk <67143766+hewillk@users.noreply.github.com>
+Date: Sun Feb 27 21:23:40 2022 +0800
+
+ [range.slide.overview] Fix bad quotation marks for string-literal (#5326)
+
+commit dd346dcbd723ae27d6a2c2a74aad8a17a62ea687
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Mar 6 00:18:57 2022 +0100
+
+ [expr.const] Add cross-reference for construct_at
+
+commit 8679960561e6f18ca533915626cdd5ecd349bcf4
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Feb 27 22:22:30 2022 +0100
+
+ [allocator.requirements.general] Replace table for descriptive variables
+
+commit 0befc0e9f7e1df2451fa115b9ff12dbd8d384c5d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Feb 27 23:59:42 2022 +0100
+
+ [allocator.requirements.general] Dismantle requirements table
+
+commit 4e4aa46276d1542b2f0ff66ebd0f66df8ba0d785
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Feb 28 00:17:47 2022 +0100
+
+ [lib] Fix cross-references to replaced table cpp17.allocator
+
+commit 2d8e11333fe4e188a940bc5c4e1a2f33b139ee3b
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Mon Feb 21 14:49:31 2022 -0400
+
+ [array.overview] Don't mention swap as an exception
+
+ The container requirements already describe this behavior,
+ so from the POV of this subclause, there's no exception.
+
+commit 65e74383deb8bcc0cab8e813b6360e9b1e8f6b10
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Mon Feb 21 14:52:15 2022 -0400
+
+ [array.overview] Mention condition of exception
+
diff --git a/papers/n4911.md b/papers/n4911.md
new file mode 100644
index 0000000000..35188804ab
--- /dev/null
+++ b/papers/n4911.md
@@ -0,0 +1,892 @@
+# N4911 Editors' Report -- Programming Languages -- C++
+
+Date: 2022-03-17
+
+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
+
+ * [N4910](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf) is the
+ current working draft for C++23. It replaces
+ [N4901](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4901.pdf).
+ * N4911 is this Editors' Report.
+
+## Motions incorporated into working draft
+
+### Core working group polls
+
+CWG poll 1: Accept as Defect Reports all issues _except issue 2502_ in
+[P2533R0](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2533r0.html)
+(Core Language Working Group "ready" Issues for the February, 2022 meeting) and
+apply the proposed resolutions for all of the issues to the C++ working paper.
+
+CWG poll 2: Apply the changes in
+[P2173R1](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2173r1.pdf)
+(Attributes on Lambda-Expressions) to the C++ Working Paper.
+
+CWG poll 3: Apply the changes in
+[P2493R0](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2493r0.html)
+(Missing feature test macros for C++20 core papers) to the C++ Working Paper.
+
+### Library working group polls
+
+LWG poll 1: Apply the changes for all Tentatively Ready issues in
+[P2531R0](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2531r0.html) (C++
+Standard Library Issues to be moved in Virtual Plenary, Feb. 2022) to the C++
+working paper.
+
+LWG poll 2: Apply the changes in
+[P0323R12](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html)
+(`std::expected`) to the C++ working paper.
+
+LWG poll 3: Apply the changes in
+[P0533R9](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0533r9.pdf)
+(constexpr for `` and ``) to the C++ working paper.
+
+LWG poll 4: Apply the changes in
+[P0627R6](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0627r6.pdf)
+(Function to mark unreachable code) to the C++ working paper.
+
+LWG poll 5: Apply the changes in
+[P1206R7](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf)
+(ranges::to: A function to convert any range to a container) to the C++ working
+paper.
+
+LWG poll 6: Apply the changes in
+[P1413R3](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf)
+(Deprecate `std::aligned_storage` and `std::aligned_union`) to the C++ working
+paper.
+
+LWG poll 7: Apply the changes in
+[P2255R2](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2255r2.html) (A
+type trait to detect reference binding to temporary) to the C++ working paper.
+
+LWG poll 8: Apply the changes in
+[P2273R3](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2273r3.pdf)
+(Making `std::unique_ptr` constexpr) to the C++ working paper.
+
+LWG poll 9: Apply the changes in
+[P2387R3](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2387r3.html)
+(Pipe support for user-defined range adaptors) to the C++ working paper.
+
+LWG poll 10: Apply the changes in
+[P2440R1](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2440r1.html)
+(`ranges::iota`, `ranges::shift_left` and `ranges::shift_right`) to the C++
+working paper.
+
+LWG poll 11: Apply the changes in
+[P2441R2](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2441r2.html)
+(`views::join_with`) to the C++ working paper.
+
+LWG poll 12: Apply the changes in
+[P2442R1](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2442r1.html)
+(Windowing range adaptors: `views::chunk` and `views::slide`) to the C++ working
+paper.
+
+LWG poll 13: Apply the changes in
+[P2443R1](http://open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2443r1.html)
+(`views::chunk_by`) to the C++ working paper.
+
+## Editorial changes
+
+### Notes on motions
+
+* **Poll CWG-2:** The wording was adjusted to integrate with the new wording
+ from issue
+ [CWG-2509](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2533r0.html#2509)
+ to use the new term _lambda-specifier-seq_ instead of the original
+ _decl-specifier-seq_.
+
+* **Poll LWG-1:** Issue
+ [LWG-3616](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2531r0.html#3616)
+ was skipped, since it had already been [applied
+ editorially](https://github.com/cplusplus/draft/commit/8753efabbbfec8371a82de1af60337fa6a6b6dc2).
+
+* **Poll LWG-8:** The wording was integrated with the resolution of
+ [LWG-3632](http://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2531r0.html#3632).
+
+### Clause reorganization
+
+We rearranged several clauses and subclauses. Over the years, the original
+clause structure had been becoming less appropriate for the growing amount of
+content, and we hope that the new structure is more suitable to the current (and
+anticipated future) content.
+
+* New top-level clause "Memory management library [mem]", after [diagnostics].
+ This clause contains ``, memory parts of ``, smart pointers,
+ memory resources, and scoped allocators, previously part of [utilities].
+
+* The "Metaprogramming library [meta]" subclause from [utilities] is now a
+ new top-level clause, in between [mem] and [utilities]. We expect future
+ reflection material to be added to this clause.
+
+* The "Atomic operations [atomics]" clause has been integrated into the
+ top-level [thread] clause, which has been renamed to "Concurrency support
+ library [thread]".
+
+* "Bit manipulation [bit]" has been moved to the end of the [utilities] clause.
+
+* "Stacktrace [stacktrace]" has been moved to the end of the [diagnostics] clause.
+
+* "String view classes [string.view]" has been moved to immediately before
+ [string.classes].
+
+* "Allocation and deallocation functions [class.free]" has been moved to
+ immediately before [class.nest].
+
+We are aiming to not change the top-level clause structure more than once per
+standard publication cycle. We have had suggestions to create a new top-level
+clause "Text" for text-related content (such as locales and regular expressions,
+but also anticipating new material). We have not yet reached consensus, and we
+will probably perform that reorganization during the C++26 cycle.
+
+### Requirements tables
+
+We have begun replacing the large requirements tables in the library with more
+conventional paragraphs, as described in editorial paper
+[P2416R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2416r2.pdf).
+Each requirement is now presented in a style similar to that of function
+declarations, followed by as many specification elements as appropriate. A new
+"_Result_:" element has been added to capture the type of a type requirement,
+and the type and value category of an expression requirement.
+
+We have applied these changes to the container, allocator, and regular
+expression trait requirements.
+
+### Term labels
+
+We have started introducing explicit LaTeX labels for defined terms, and we have
+updated cross references to refer to those term labels instead of the label of
+the subclause that contains the term. This does not change the presentation of
+the reference, but makes it less likely that cross references are invalidated by
+moving text around.
+
+In the future, we might extend this to turn the use of a term into a hyperlink
+to the page on which the term's definition appears.
+
+### Minor editorial changes
+
+A log of editorial fixes made to the working draft since N4901 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/n4901...n4910).
+
+ commit 04e0ea7074c9b0d0ca939821ce0f575c589df6b7
+ Author: Jens Maurer
+ Date: Thu Oct 21 23:52:55 2021 +0200
+
+ [pairs.pair] Use T1/T2, not first_type/second_type
+
+ commit ed6e1b5da5d13449cf27c878c60e90892289f98a
+ Author: Jens Maurer
+ Date: Sat Oct 23 01:20:31 2021 +0200
+
+ [index] Fix dangling 'see' references
+
+ Also update the automatic check script to prevent
+ further occurrences.
+
+ commit 3d1424716844aef59891d770709e19d83b5bea35
+ Author: Jens Maurer
+ Date: Sun Oct 24 22:05:40 2021 +0200
+
+ [ranges] Remove \expos markers for nested types (#4829)
+
+ An \expos marker should appear only on the first
+ declaration of a name.
+
+ commit 741c20794fdc7aec28afcd9e6c52d6d184d2845c
+ Author: Jens Maurer
+ Date: Tue Oct 26 16:36:39 2021 +0200
+
+ [class.copy.assign] Fix phrasing in note to avoid 'could'. (#4418)
+
+ commit f3ab334c789ac89d2f6baf501d60716278cb8fa3
+ Author: Jens Maurer
+ Date: Sun Jul 4 23:30:42 2021 +0200
+
+ [contents] Add special lookup treatment for swap
+
+ commit 280684c7824b6b7f62c003b909ccf3703d82681b
+ Author: Johel Ernesto Guerrero Peña
+ Date: Mon Nov 8 07:19:14 2021 -0400
+
+ [defs] Update introduction to match ISO Directives (#5096)
+
+ Reference: https://www.iso.org/sites/directives/current/part2/index.xhtml#_idTextAnchor218
+
+ commit 1567c481e3ca3c52f80e4a33db0f913ce1392c4d
+ Author: Jonathan Wakely
+ Date: Tue Nov 9 09:31:08 2021 +0000
+
+ [intro.refs] Update dated reference to previous POSIX standard
+
+ Fixes #5098
+
+ commit c8ec4ab45f58e3a16d8dcb12bd660dd2cf6e936a
+ Author: Jens Maurer
+ Date: Tue Nov 23 17:22:38 2021 +0100
+
+ [refwrap.general] Add cross-references to the class synopsis (#5122)
+
+ Also rename [refwrap.const], because it does not specify
+ any destructors.
+
+ commit b4bf594c81865f892bae81342ffb67c8ca8adb74
+ Author: Jens Maurer
+ Date: Tue Nov 23 17:24:35 2021 +0100
+
+ [smartptr] Rework subclause nesting (#5119)
+
+ commit d0cb462d511e5c9bf1ae7403c275f7c1ccf2543d
+ Author: Hewill Kang <67143766+hewillk@users.noreply.github.com>
+ Date: Sat Nov 20 02:16:40 2021 +0800
+
+ [range.adjacent.overview] Fix multi-character in example
+
+ commit 26f6a1f7573ea54ed93b4e90d0e487fe39d44b87
+ Author: Jens Maurer
+ Date: Sat Nov 13 10:01:36 2021 +0100
+
+ [dcl.typedef] Add explanation for lookup failure in example
+
+ commit c63e5e836e8dbe0ae6c7ebc1b2a1b1534d37a220
+ Author: Jens Maurer
+ Date: Wed Nov 10 23:40:48 2021 +0100
+
+ [input.output] Fix headings of 'assign and swap' subclauses
+
+ commit d2699e5de0c10085df309074d2dfbc57d5bc86bb
+ Author: Jens Maurer
+ Date: Wed Oct 27 21:20:02 2021 +0200
+
+ [std] Replace 'OK:' in code comments with 'OK,'
+
+ In contrast to errors, which use a colon, an OK comment
+ is not followed by any unique reason why the code is
+ well-formed, but by a subjective highlighting of a fact.
+
+ commit 5e3f1ad0ceb89feb2977a0531422bcbe9ab8fba7
+ Author: Jens Maurer
+ Date: Tue Oct 26 21:49:15 2021 +0200
+
+ [stdatomic.h.syn] Fix missing \expos
+
+ and augment the autmatic checks accordingly.
+
+ commit 16e60c63ad14f3f3fc9132a8443421a15ebec8fc
+ Author: Jens Maurer
+ Date: Tue Nov 9 13:09:27 2021 +0100
+
+ [locale.time.get] Replace 'ISO/IEC 9945' with 'POSIX'
+
+ We introduce POSIX as an alias for ISO/IEC 9945, and we use 'POSIX'
+ everywhere else.
+
+ commit 31c32e035770797eedc69f150c3a3484bbe828a5
+ Author: Jens Maurer
+ Date: Tue Nov 9 17:54:18 2021 +0100
+
+ [locale.time.get.virtuals] Use 'conversion specification'
+
+ POSIX does not define the term 'conversion directive'.
+
+ commit fbab3f13719c34affdb7b712aed7f6d2313570d7
+ Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+ Date: Tue Nov 23 20:03:13 2021 +0300
+
+ [defns.access, basic.lval] Clarify what can be accessed and how (#4777)
+
+ commit 5475bdab828b3585a21172945303ccebbcefb516
+ Author: Jens Maurer
+ Date: Thu Oct 21 22:11:07 2021 +0200
+
+ [c.mb.wcs] mbrtoc8 stores code units, not characters
+
+ commit ba4bb3ee56b94b63d0d1e5914a136a04b1620052
+ Author: mordante
+ Date: Tue Nov 23 18:13:22 2021 +0100
+
+ [format.functions] Add "std::move" around "out" (#5069)
+
+ This fixes a misapplication of the resolution of LWG 3539.
+
+ commit 0d0ec1a1393b3baae564234007c94b80da9bab48
+ Author: Jens Maurer
+ Date: Tue Nov 23 18:15:55 2021 +0100
+
+ [func.wrap.{func.general, move.class}] Remove 'first-class object' (#5067)
+
+ The term is undefined and does not improve the specification.
+
+ commit d27c3b388befadc4c35aac1d12f0ba8581f14a5f
+ Author: Jonathan Wakely
+ Date: Fri Nov 12 14:29:00 2021 +0000
+
+ [spanstream.ctor] Fix base class name in effects
+
+ commit c1935504da840995b1bb60eba536cb12bca5ae71
+ Author: timsong-cpp
+ Date: Tue Nov 23 11:51:37 2021 -0600
+
+ [basic.start.main] Remove redundant phrase (#5083)
+
+ commit 70eb0406596b4f4e3d97ed50b3fd6d93b3032d18
+ Author: Jens Maurer
+ Date: Mon Oct 25 23:57:58 2021 +0200
+
+ [basic.start.main] Avoid implementation guidance in a note
+
+ commit ac8d6611a739c64eda4a7062f2cb83f770cd8a53
+ Author: Jens Maurer
+ Date: Mon Oct 25 23:58:08 2021 +0200
+
+ [dcl.link] Avoid implementation guidance in a note
+
+ commit 2ad67aefe350017c4e9403ba2015af683813787f
+ Author: Jens Maurer
+ Date: Sat Nov 6 22:08:47 2021 +0100
+
+ [lex] Remove Unicode character name abbreviations
+
+ They are not part of the character name or alias.
+ The presentation in ISO 10646 is misleading, though.
+
+ commit 29c89b16e92cd03a76eb2a19866e683a7bb7ac80
+ Author: Jens Maurer
+ Date: Sat Nov 6 22:15:05 2021 +0100
+
+ [lex] Rename U+0007 BELL to ALERT
+
+ The former is ambiguous with U+1F514 BELL.
+ The ALERT alias is defined in UCD NameAliases.txt.
+
+ commit 408623b7d8f0efd77403d1d0142d9bd59d1cfe55
+ Author: Jens Maurer
+ Date: Sat Dec 4 11:19:54 2021 +0100
+
+ [associative.reqmts.general] Fix typo: 'kx', not 'rx' (#5136)
+
+ commit f03473cd1e32691c105260e65dd534960cf9db21
+ Author: Neven Sajko
+ Date: Sun Dec 5 21:19:00 2021 +0100
+
+ [over.sub] Fix typo: change oeprator to operator (#5140)
+
+ commit c69a35501174f5ab5d3f13f12186cc9b1fcd40dd
+ Author: Jens Maurer
+ Date: Tue Dec 14 11:24:04 2021 +0100
+
+ [range.access] Fix cross-references for 'array' (#5147)
+
+ Also introduce a label 'term.array.type' in [dcl.array].
+
+ commit 7a09dddd036359a10cf10b8e7d80c8edd8c76817
+ Author: Jens Maurer
+ Date: Thu Dec 16 19:39:18 2021 +0100
+
+ [basic.fundamental] Excise normative requirements on std::numeric_limits (#5105)
+
+ commit c2617432eac3313abd2134a26e2d8a1d925dfd15
+ Author: Casey Carter
+ Date: Thu Dec 16 23:53:17 2021 -0800
+
+ [depr.default.allocator] Index allocator::is_always_equal here (#5152)
+
+ LWG3170 deprecated `allocator::is_always_equal`. We moved it to Annex D, but left the index entry behind.
+
+ commit 28effaea15ef697f5a64fba47b9c095c9fbfe82a
+ Author: Jens Maurer
+ Date: Sun Dec 19 22:16:18 2021 +0100
+
+ [ptr.align,re.regiter.incr] Replace 'compiler' with 'implementation'
+
+ commit 575b9a99062de34cc44bc45aeb459f32aa12b98f
+ Author: Jens Maurer
+ Date: Sun Dec 19 22:19:19 2021 +0100
+
+ [smartptr.adapt] Emphasize that casting might not always be viable
+
+ commit 9ba8e0329a0f5db15544c31c514ff44e0003f08f
+ Author: frederick-vs-ja
+ Date: Tue Jan 11 23:29:26 2022 +0800
+
+ [pairs.pair] Add missing _v for type traits (#5196)
+
+ commit dae6769d9767e2e47f2fe451d9c796dd07d0ae29
+ Author: zhihaoy <43971430+zhihaoy@users.noreply.github.com>
+ Date: Thu Jan 13 14:03:25 2022 -0800
+
+ [func.memfn] Correct target object by fixing typo (#5202)
+
+ commit 5f830f97829965cf791dfe6eef6b84d6283712be
+ Author: Jens Maurer
+ Date: Wed Nov 24 22:04:55 2021 +0100
+
+ [lib] Add 'namespace std' wrappings around class definitions
+
+ Those were missing in a few places, notably [rand].
+
+ Also add an automated check.
+
+ commit 1031a409dfacb84b9871b16502c73e15249160eb
+ Author: Jens Maurer
+ Date: Fri Nov 19 23:02:19 2021 +0100
+
+ [chrono.syn] Use nested namespace definitions for clarity
+
+ commit dad631ac4bd30e7ab6de5a888f77ed2b5b44c17d
+ Author: Jens Maurer
+ Date: Sat Nov 6 09:39:55 2021 +0100
+
+ [except.throw,except.handle] Move lvalue specification for copies
+
+ commit c6e5eea4f11efec62a4718acd4eb17fb99fd4899
+ Author: Jens Maurer
+ Date: Mon Oct 25 23:41:31 2021 +0200
+
+ [expr.prim.req.general] Change requirement-seq to right-recursive
+
+ consistent with the specification of other -seq non-terminals.
+
+ commit 872fce6effc603735c9717981807eb6bb8b4f838
+ Author: Jens Maurer
+ Date: Sat Dec 4 11:33:32 2021 +0100
+
+ [associative.reqmts.general] Fix confusing local use of 'r'
+
+ commit 3d1bf58b74860fc1e86cd1cf536b7022b90d688d
+ Author: Jens Maurer
+ Date: Fri Jan 7 20:26:15 2022 +0100
+
+ [temp.res.general] Clarify binding of names
+
+ commit 4123264d22c7617d828083c9ad954b5541934621
+ Author: Jens Maurer
+ Date: Mon Oct 25 18:15:14 2021 +0200
+
+ [temp.constr.atomic] Fix phrasing in note
+
+ commit 26ce304780d79bba03a791b2f4299f083f021238
+ Author: Jens Maurer
+ Date: Tue Dec 14 09:25:41 2021 +0100
+
+ [dcl.meaning.general] Clarify correspondence for block-scope friends
+
+ commit 3c19e315dbb05a2c22b8f5b075af39a7572cdaa1
+ Author: Jens Maurer
+ Date: Thu Dec 23 11:18:17 2021 +0100
+
+ [meta.rel] Avoid undefined term 'void types'
+
+ commit 90d178d022c7d597629853ebc70262489e49d5e9
+ Author: Jens Maurer
+ Date: Fri Jan 14 19:46:15 2022 +0100
+
+ [class.default.ctor] Fix implicit invocation of default constructor (#4026)
+
+ Initialization is fully specified in [dcl.init],
+ so turn the list of default-initialization cases
+ into a note and shorten it appropriately.
+
+ commit e1bfc25c56c7ab303241f980fa00d7ae402e1f5c
+ Author: Jens Maurer
+ Date: Mon Jul 5 23:51:41 2021 +0200
+
+ [stmt.return,class.{ctor,dtor}] Clarify no return operand
+
+ Highlight that constructors and destructors do not have a
+ return type and thus a return statement within a constructor
+ or destructor cannot have an operand.
+
+ commit b345505b88b376d547220254fd858840efbfb937
+ Author: Chuanqi Xu
+ Date: Fri Jan 14 10:10:11 2022 +0800
+
+ [temp.param] Delete outdated wording at p15
+
+ The wording at [temp.param]/15 says:
+ > A template-parameter shall not be given default arguments by two
+ > different declarations if one is reachable from the other.
+
+ But it is conflicted with [basic.def.odr]/13:
+ > There can be more than one definition of a
+ > ...
+ > default template argument
+ > ...
+ > in a program provided that each definition appears in a different
+ > translation unit and the definitions satisfy the [same-meaning
+ > criteria of the ODR].
+
+ [temp.param] should be deleted otherwise we couldn't modularize a real
+ project.
+
+ commit fc9818bcdaa08f65c8d99f7df70b418810c36893
+ Author: Jens Maurer
+ Date: Sat Jan 15 09:43:55 2022 +0100
+
+ [util.smartptr.atomic] Add cross-reference to header (#5207)
+
+ commit 5c59ede65b362afb418bda3cf82123ae2ca2553c
+ Author: Jens Maurer
+ Date: Thu Dec 23 11:36:39 2021 +0100
+
+ [locale.ctype.virtuals] Clarify do_widen parameter
+
+ commit cec2d218209abf2979a3c7fabc9970d8677b9e63
+ Author: Jens Maurer
+ Date: Thu Dec 23 12:53:01 2021 +0100
+
+ [diff.stmt] Properly refer to function return types
+
+ Also annotate the 'void' and 'int' keywords.
+
+ commit ba9124e62ea85c922d501dfc52bc4d44c85933bd
+ Author: Jonathan Wakely
+ Date: Fri Jan 21 15:57:58 2022 +0000
+
+ [util.smartptr.atomic.general] Fix cross-reference to shared_ptr (#5222)
+
+ commit 3cb2ee9d67360612e6361aa26d1805c8ed30c6e6
+ Author: Chuanqi Xu <68680648+ChuanqiXu9@users.noreply.github.com>
+ Date: Sat Jan 22 17:43:22 2022 +0800
+
+ [temp.dep.general] add trailing 'or' (#5186)
+
+ commit 4e2dbd25fa137f12c8fa6b960bc2db45be994414
+ Author: Jens Maurer
+ Date: Sat Jan 22 13:38:10 2022 +0100
+
+ [class.free] Move into [class.mem]
+
+ The class-specific allocation and deallocation functions,
+ whose declaration properties are specified in this section,
+ are class member functions.
+
+ commit 7987ef93488842bbdbbd6e4de996f463939fe0e8
+ Author: Jens Maurer
+ Date: Sat Jan 22 13:45:23 2022 +0100
+
+ [class.free] Change subclause heading and add indexing
+
+ Rename the heading to "Allocation and deallocation functions",
+ which is more appropriate for the contents of the subclause.
+
+ commit 07db0b3182495339b00221bba41549913e0a6a0e
+ Author: Jens Maurer
+ Date: Sat Jan 22 14:35:11 2022 +0100
+
+ [stacktrace] Move into [diagnostics]
+
+ commit 0df02c99d04dd0e0d29ea520904ea64f69ea6c36
+ Author: Jens Maurer
+ Date: Thu Jan 20 19:42:09 2022 +0100
+
+ [class.mem.general] Add cross-reference for 'layout-compatible type'
+
+ commit 2e5976f894d821e442a6f98c3e235381f8067570
+ Author: Jens Maurer
+ Date: Thu Jan 20 19:36:15 2022 +0100
+
+ [stmt.return] Clarify flowing off the end of a function
+
+ commit 88541f7ad5de85389adb0e88f295091d29f00030
+ Author: Jens Maurer
+ Date: Tue Jan 25 23:12:55 2022 +0100
+
+ [range.req.general] Remove incorrect normative duplication for 'view' (#5235)
+
+ commit 0539c5e2cdf7605c5704eb2b63916b6c5c3b9539
+ Author: Jens Maurer
+ Date: Thu Feb 18 13:42:57 2021 +0100
+
+ [macros,structure.specifications] Add 'Result' element
+
+ commit 408a22b1b58207de4af28d59afd20156e715e35f
+ Author: Jens Maurer
+ Date: Thu Jan 7 23:48:43 2021 +0100
+
+ [re.req] Replace requirements table with \itemdescr
+
+ commit 93ff092d1cd2b335f372b9546365b3d495caf2d8
+ Author: Jens Maurer
+ Date: Sun Nov 14 20:05:03 2021 +0100
+
+ [container.requirements] Replace requirements tables with \itemdescr
+
+ and adjust cross-references to container requirements tables
+ throughout the standard library.
+
+ commit 4b1a735f393aa5c864d0a5aba45514aec63f5a90
+ Author: Jens Maurer
+ Date: Sun Jun 27 11:26:39 2021 +0200
+
+ [container.requirements] Omit redundant specification
+
+ where "Effects: Equivalent to" wording is used.
+
+ commit d37470de0392f032d96c85610c947918269532a9
+ Author: Jens Maurer
+ Date: Sun Feb 20 00:09:56 2022 +0100
+
+ [lex.name] Rephrase note to avoid upper/lower-case
+
+ commit efd0cab6f2d11f29f205c15672108f6e20de6010
+ Author: Jens Maurer
+ Date: Sun Feb 20 14:28:36 2022 +0100
+
+ [lib] Add missing \pnum before descriptive elements
+
+ Also fix the ineffective check script by rewriting the
+ check in straightforward awk.
+
+ commit ff92c80b70b9cd887512f96e5d5525c20550d12f
+ Author: Jens Maurer
+ Date: Sun Feb 6 09:52:01 2022 +0100
+
+ [iterator.concept.winc] Remove duplicate paragraph
+
+ This fixes a bad merge between P2393R1 Cleaning up integer-class types
+ and P2321R2 zip.
+
+ commit a4dfa1f0c46152d3a3399bc32a60fcf11edd4a5d
+ Author: Chuanqi Xu <68680648+ChuanqiXu9@users.noreply.github.com>
+ Date: Mon Feb 21 07:18:41 2022 +0800
+
+ [module.interface] Add adjective 'exported' (#5290)
+
+ It was clear in context that "the declaration" is exported, but
+ it is easier to understand if we restate "an exported declaration".
+
+ commit 90ef396f088a4e1730a3f73f3db44d9ad8b872b7
+ Author: Jonathan Wakely
+ Date: Tue Feb 1 13:58:38 2022 +0000
+
+ [fs.class.directory.iterator.general] Fix grammar
+
+ commit 1155c4a361c446eee4602b7fd2e82eba7a4f8c4f
+ Author: languagelawyer
+ Date: Sat Jan 22 23:27:49 2022 +0300
+
+ [temp.res] Move a note outside itemize environment
+
+ commit 44c79f59de6c4ea179bacc698272d713e696b117
+ Author: Jens Maurer
+ Date: Sat Jan 29 09:37:59 2022 +0100
+
+ [derivation] Remove 'basic integral type' from footnote
+
+ Also switch footnote to note.
+
+ commit 785b0a84e7b0f8108b5140f33494ceff3d0bd282
+ Author: Jens Maurer
+ Date: Thu Dec 23 11:40:48 2021 +0100
+
+ [diff.expr] Replace 'will' with present tense
+
+ Also annotate the 'void' keyword.
+
+ commit 97a72e1c4f1616f2163d34deafea010d68099a7c
+ Author: Jens Maurer
+ Date: Sun Dec 5 21:22:48 2021 +0100
+
+ [temp.local] Fix type-name interpretation of injected-class-name
+
+ commit a8e63922a5f049ab2c58a33117913688b8dc096a
+ Author: A. Jiang
+ Date: Mon Feb 21 20:27:01 2022 +0800
+
+ [container.gen.reqmts] Replace "Value:" with "Returns:" (#5256)
+
+ commit d267cde4fcc2c13ef87170d68f94f1ae6e499c23
+ Author: Jens Maurer
+ Date: Mon Feb 21 13:51:45 2022 +0100
+
+ [over.best.ics] Clarify phrasing around user-defined conversion sequence (#5086)
+
+ This replaces the use of "with" that is popular in mathematical writing
+ with a more common construction.
+
+ commit 7424b45d8470b8765cdf3b25bcfd9a9a89c0c936
+ Author: Jens Maurer
+ Date: Mon Jan 3 22:24:23 2022 +0100
+
+ [expr] Cleanup for 'discarded-value expression'
+
+ commit b5ce71b34217f9d974e96cc366984cbd5f4b71e6
+ Author: Jens Maurer
+ Date: Fri Dec 17 20:31:57 2021 +0100
+
+ [atomics] Harmonize references to atomics operations tables
+
+ commit ef78018c8d61d79dc9cddc5f4b2d00a7929964fa
+ Author: Jens Maurer
+ Date: Fri Jan 21 23:01:25 2022 +0100
+
+ [std] Replace hyphen with period in labels
+
+ and add a check.
+
+ commit 58ea575dd9b4a410dcf457b3357bef4a720e1608
+ Author: Jens Maurer
+ Date: Thu Jan 13 23:21:05 2022 +0100
+
+ [function.objects,ranges] Introduce labels for call wrappers
+
+ In particular, 'term.perfect.forwarding.call.wrapper'
+ and 'term.simple.call.wrapper', and refer to them.
+
+ commit 0c53beacef2289e4cc4fabbdff99eb3b6c7ae4ad
+ Author: Jens Maurer
+ Date: Mon Jul 5 23:16:20 2021 +0200
+
+ [unique.ptr.single] Rephrase destruction
+
+ commit 03b9040814ecd548f2de18668df0655ef7b37efb
+ Author: S. B. Tam
+ Date: Tue Feb 22 09:39:37 2022 +0800
+
+ [version.syn] Remove mention of nonexistent header ``
+
+ commit 97430e8f867f5b97f79c8064c32dd1bde117198a
+ Author: Jens Maurer
+ Date: Mon Nov 22 22:20:16 2021 +0100
+
+ [allocator.adaptor.members] Fix select_on_container_copy_construction
+
+ The description was confusing objects and types.
+
+ commit 2cd31adb2033b4ae82339ef270bc058128cbd199
+ Author: Jens Maurer
+ Date: Wed Feb 23 22:38:13 2022 +0100
+
+ [bit] Move into [utilities]
+
+ commit e3532fd233355f93558f6a53d14b72e16a1f1ed2
+ Author: Jens Maurer
+ Date: Wed Feb 23 22:44:52 2022 +0100
+
+ [memory] Create new clause
+
+ and move [memory], [smartptr], [mem.res], and [allocator.adaptor]
+ from [utilities] into the new clause.
+
+ commit cb7b98d46c4603ccc485fe826fb4363cb2c039bf
+ Author: Jens Maurer
+ Date: Wed Feb 23 22:48:10 2022 +0100
+
+ [comparisons.three.way,func.search] Add namespace around class definition
+
+ commit 1daeb8e44b659c5cdf7133df68def1264c8b5774
+ Author: Jens Maurer
+ Date: Wed Feb 23 22:54:01 2022 +0100
+
+ Move [string.view] to before [string.classes]
+
+ commit 724e83e4d0cd82737952711d31505872188269ab
+ Author: Jens Maurer
+ Date: Wed Feb 23 23:01:35 2022 +0100
+
+ [meta] Create new clause
+
+ and move [intseq], [meta], and [ratio] from [utilities] into the
+ new clause.
+
+ commit af8334b94be2df5bf009ef7381460f56e6224c44
+ Author: Jens Maurer
+ Date: Wed Feb 23 23:06:45 2022 +0100
+
+ [meta] Adjust cross-references
+
+ commit d74c2170a9f4c928519461d7742293af2d141852
+ Author: Jens Maurer
+ Date: Wed Feb 23 23:19:51 2022 +0100
+
+ Move [atomics] into [thread]
+
+ Rename [thread] to 'Concurrency support library'.
+
+ commit 888602381e6c4e5fc886a7e575a95c905998b487
+ Author: A. Jiang
+ Date: Thu Feb 24 11:35:19 2022 +0800
+
+ [headers] List
+
+ commit aa2c64589cf2a784e9c551a2a54df59b880613d3
+ Author: Jens Maurer
+ Date: Thu Feb 24 15:09:08 2022 +0100
+
+ [thread] Rename to 'Concurrency support library'
+
+ Missed update with commit d74c2170a9f4c928519461d7742293af2d141852.
+
+ commit 000d4c091a244b3bf81470c6c6a4f2f35c3ec602
+ Author: hewillk <67143766+hewillk@users.noreply.github.com>
+ Date: Fri Feb 25 01:14:48 2022 +0800
+
+ [range.chunk.outer.value] Add missing private specifier
+
+ commit 2901f3f6c00060e6c0a368efd28fd50ba07350f1
+ Author: Jens Maurer
+ Date: Fri Feb 25 23:38:49 2022 +0100
+
+ [diff.cpp20.library] Add subclause, highlighting new headers
+
+ commit 1c88b6bdafb2eb128e7da05815f3b30fa52d3710
+ Author: hewillk <67143766+hewillk@users.noreply.github.com>
+ Date: Sun Feb 27 21:23:40 2022 +0800
+
+ [range.slide.overview] Fix bad quotation marks for string-literal (#5326)
+
+ commit dd346dcbd723ae27d6a2c2a74aad8a17a62ea687
+ Author: Jens Maurer
+ Date: Sun Mar 6 00:18:57 2022 +0100
+
+ [expr.const] Add cross-reference for construct_at
+
+ commit 8679960561e6f18ca533915626cdd5ecd349bcf4
+ Author: Jens Maurer
+ Date: Sun Feb 27 22:22:30 2022 +0100
+
+ [allocator.requirements.general] Replace table for descriptive variables
+
+ commit 0befc0e9f7e1df2451fa115b9ff12dbd8d384c5d
+ Author: Jens Maurer
+ Date: Sun Feb 27 23:59:42 2022 +0100
+
+ [allocator.requirements.general] Dismantle requirements table
+
+ commit 4e4aa46276d1542b2f0ff66ebd0f66df8ba0d785
+ Author: Jens Maurer
+ Date: Mon Feb 28 00:17:47 2022 +0100
+
+ [lib] Fix cross-references to replaced table cpp17.allocator
+
+ commit 2d8e11333fe4e188a940bc5c4e1a2f33b139ee3b
+ Author: Johel Ernesto Guerrero Peña
+ Date: Mon Feb 21 14:49:31 2022 -0400
+
+ [array.overview] Don't mention swap as an exception
+
+ The container requirements already describe this behavior,
+ so from the POV of this subclause, there's no exception.
+
+ commit 65e74383deb8bcc0cab8e813b6360e9b1e8f6b10
+ Author: Johel Ernesto Guerrero Peña
+ Date: Mon Feb 21 14:52:15 2022 -0400
+
+ [array.overview] Mention condition of exception
diff --git a/papers/wd-index.md b/papers/wd-index.md
index 675cf0c61b..5b3d4dee1e 100644
--- a/papers/wd-index.md
+++ b/papers/wd-index.md
@@ -38,5 +38,6 @@
* [N4868](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/n4868.pdf) 2020-10 C++ Working Draft
* [N4878](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/n4878.pdf) 2020-12 C++ Working Draft
* [N4885](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4885.pdf) 2021-03 C++ Working Draft
- * [N4892](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4892.pdf) 2021-03 C++ Working Draft
- * [N4901](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4901.pdf) 2021-03 C++ Working Draft
+ * [N4892](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4892.pdf) 2021-06 C++ Working Draft
+ * [N4901](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4901.pdf) 2021-10 C++ Working Draft
+ * [N4910](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf) 2022-03 C++ Working Draft
diff --git a/source/algorithms.tex b/source/algorithms.tex
index c35079a748..4c0f369fac 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
@@ -641,6 +641,9 @@
template
struct in_found_result;
+
+ template
+ struct out_value_result;
}
// \ref{alg.nonmodifying}, non-modifying sequence operations
@@ -1815,6 +1818,15 @@
shift_left(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
ForwardIterator first, ForwardIterator last,
typename iterator_traits::difference_type n);
+
+ namespace ranges {
+ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S>
+ constexpr subrange shift_left(I first, S last, iter_difference_t n);
+ template<@\libconcept{forward_range}@ R>
+ requires @\libconcept{permutable}@>
+ constexpr borrowed_subrange_t shift_left(R&& r, range_difference_t n);
+ }
+
template
constexpr ForwardIterator
shift_right(ForwardIterator first, ForwardIterator last,
@@ -1825,6 +1837,14 @@
ForwardIterator first, ForwardIterator last,
typename iterator_traits::difference_type n);
+ namespace ranges {
+ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S>
+ constexpr subrange shift_right(I first, S last, iter_difference_t n);
+ template<@\libconcept{forward_range}@ R>
+ requires @\libconcept{permutable}@>
+ constexpr borrowed_subrange_t shift_right(R&& r, range_difference_t n);
+ }
+
// \ref{alg.sorting}, sorting and related operations
// \ref{alg.sort}, sorting
template
@@ -2651,7 +2671,7 @@
constexpr T min(initializer_list r, Comp comp = {}, Proj proj = {});
template<@\libconcept{input_range}@ R, class Proj = identity,
@\libconcept{indirect_strict_weak_order}@, Proj>> Comp = ranges::less>
- requires @\libconcept{indirectly_copyable}@_storable, range_value_t*>
+ requires @\libconcept{indirectly_copyable_storable}@, range_value_t*>
constexpr range_value_t
min(R&& r, Comp comp = {}, Proj proj = {});
}
@@ -2673,7 +2693,7 @@
constexpr T max(initializer_list r, Comp comp = {}, Proj proj = {});
template<@\libconcept{input_range}@ R, class Proj = identity,
@\libconcept{indirect_strict_weak_order}@, Proj>> Comp = ranges::less>
- requires @\libconcept{indirectly_copyable}@_storable, range_value_t*>
+ requires @\libconcept{indirectly_copyable_storable}@, range_value_t*>
constexpr range_value_t
max(R&& r, Comp comp = {}, Proj proj = {});
}
@@ -2700,7 +2720,7 @@
minmax(initializer_list r, Comp comp = {}, Proj proj = {});
template<@\libconcept{input_range}@ R, class Proj = identity,
@\libconcept{indirect_strict_weak_order}@, Proj>> Comp = ranges::less>
- requires @\libconcept{indirectly_copyable}@_storable, range_value_t*>
+ requires @\libconcept{indirectly_copyable_storable}@, range_value_t*>
constexpr minmax_result>
minmax(R&& r, Comp comp = {}, Proj proj = {});
}
@@ -2741,7 +2761,7 @@
ForwardIterator first, ForwardIterator last,
Compare comp);
- namespace ranges {
+ namespace ranges {
template<@\libconcept{forward_iterator}@ I, @\libconcept{sentinel_for}@ S, class Proj = identity,
@\libconcept{indirect_strict_weak_order}@> Comp = ranges::less>
constexpr I max_element(I first, S last, Comp comp = {}, Proj proj = {});
@@ -3037,6 +3057,24 @@
return {std::move(in), found};
}
};
+
+ template
+ struct out_value_result {
+ [[no_unique_address]] O out;
+ [[no_unique_address]] T value;
+
+ template
+ requires @\libconcept{convertible_to}@ && @\libconcept{convertible_to}@
+ constexpr operator out_value_result() const & {
+ return {out, value};
+ }
+
+ template
+ requires @\libconcept{convertible_to}@ && @\libconcept{convertible_to}@
+ constexpr operator out_value_result() && {
+ return {std::move(out), std::move(value)};
+ }
+ };
}
\end{codeblock}
@@ -3295,7 +3333,7 @@
\pnum
\mandates
The type \tcode{Size} is convertible
-to an integral type~(\ref{conv.integral}, \ref{class.conv}).
+to an integral type\iref{conv.integral,class.conv}.
\pnum
\expects
@@ -3335,7 +3373,7 @@
\pnum
\mandates
The type \tcode{Size} is convertible
-to an integral type~(\ref{conv.integral}, \ref{class.conv}).
+to an integral type\iref{conv.integral,class.conv}.
\pnum
\expects
@@ -4207,7 +4245,7 @@
\pnum
\mandates
The type \tcode{Size}
-is convertible to an integral type~(\ref{conv.integral}, \ref{class.conv}).
+is convertible to an integral type\iref{conv.integral,class.conv}.
\pnum
\returns
@@ -4447,7 +4485,7 @@
\pnum
\mandates
The type \tcode{Size} is convertible
-to an integral type~(\ref{conv.integral}, \ref{class.conv}).
+to an integral type\iref{conv.integral,class.conv}.
\pnum
\effects
@@ -5188,7 +5226,7 @@
The expression \tcode{value}
is writable\iref{iterator.requirements.general} to the output iterator.
The type \tcode{Size} is convertible
-to an integral type~(\ref{conv.integral}, \ref{class.conv}).
+to an integral type\iref{conv.integral,class.conv}.
\pnum
\effects
@@ -5242,7 +5280,7 @@
\pnum
\mandates
\tcode{Size} is convertible
-to an integral type~(\ref{conv.integral}, \ref{class.conv}).
+to an integral type\iref{conv.integral,class.conv}.
\pnum
\effects
@@ -6003,14 +6041,20 @@
ForwardIterator
shift_left(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
typename iterator_traits::difference_type n);
+
+template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S>
+ constexpr subrange ranges::shift_left(I first, S last, iter_difference_t n);
+template<@\libconcept{forward_range}@ R>
+ requires @\libconcept{permutable}@>
+ constexpr borrowed_subrange_t ranges::shift_left(R&& r, range_difference_t n)
\end{itemdecl}
\begin{itemdescr}
\pnum
\expects
\tcode{n >= 0} is \tcode{true}.
-The type of \tcode{*first} meets
-the \oldconcept{MoveAssignable} requirements.
+For the overloads in namespace \tcode{std},
+the type of \tcode{*first} meets the \oldconcept{MoveAssignable} requirements.
\pnum
\effects
@@ -6019,14 +6063,22 @@
from position \tcode{first + n + i}
into position \tcode{first + i}
for each non-negative integer \tcode{i < (last - first) - n}.
-In the first overload case, does so in order starting
+For the overloads without an \tcode{ExecutionPolicy} template parameter,
+does so in order starting
from \tcode{i = 0} and proceeding to \tcode{i = (last - first) - n - 1}.
\pnum
\returns
-\tcode{first + (last - first - n)}
+Let \exposid{NEW_LAST} be \tcode{first + (last - first - n)}
if \tcode{n < last - first},
otherwise \tcode{first}.
+\begin{itemize}
+\item
+\exposid{NEW_LAST} for the overloads in namespace \tcode{std}.
+\item
+\tcode{\{first, \exposid{NEW_LAST}\}}
+for the overloads in namespace \tcode{ranges}.
+\end{itemize}
\pnum
\complexity
@@ -6043,15 +6095,21 @@
ForwardIterator
shift_right(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
typename iterator_traits::difference_type n);
+
+template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S>
+ constexpr subrange ranges::shift_right(I first, S last, iter_difference_t n);
+template<@\libconcept{forward_range}@ R>
+ requires @\libconcept{permutable}@>
+ constexpr borrowed_subrange_t ranges::shift_right(R&& r, range_difference_t n);
\end{itemdecl}
\begin{itemdescr}
\pnum
\expects
\tcode{n >= 0} is \tcode{true}.
-The type of \tcode{*first} meets
-the \oldconcept{MoveAssignable} requirements.
-\tcode{ForwardIterator} meets
+For the overloads in namespace \tcode{std},
+the type of \tcode{*first} meets the \oldconcept{MoveAssignable} requirements,
+and \tcode{ForwardIterator} meets
the \oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators} or
the \oldconcept{ValueSwap\-pable} requirements.
@@ -6061,16 +6119,29 @@
Otherwise, moves the element
from position \tcode{first + i} into position \tcode{first + n + i}
for each non-negative integer \tcode{i < (last - first) - n}.
-In the first overload case, if \tcode{ForwardIterator} meets
-the \oldconcept{BidirectionalIterator} requirements,
-does so in order starting
-from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0}.
+Does so in order starting
+from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if:
+\begin{itemize}
+\item
+for the overload in namespace \tcode{std}
+without an \tcode{ExecutionPolicy} template parameter,
+\tcode{Forward\-Iterator} meets the \oldconcept{BidirectionalIterator} requirements,
+\item
+for the overloads in namespace \tcode{ranges},
+\tcode{I} models \libconcept{bidirectional_iterator}.
+\end{itemize}
\pnum
\returns
-\tcode{first + n}
-if \tcode{n < last - first},
+Let \exposid{NEW_FIRST} be \tcode{first + n} if \tcode{n < last - first},
otherwise \tcode{last}.
+\begin{itemize}
+\item
+\exposid{NEW_FIRST} for the overloads in namespace \tcode{std}.
+\item
+\tcode{\{\exposid{NEW_FIRST}, last\}}
+for the overloads in namespace \tcode{ranges}.
+\end{itemize}
\pnum
\complexity
@@ -6737,7 +6808,7 @@
\pnum
\expects
The elements \tcode{e} of \range{first}{last}
-are partitioned with respect to the expression
+are partitioned with respect to the expression\\
\tcode{bool(invoke(comp, invoke(proj, e), value))}.
\pnum
@@ -6784,7 +6855,7 @@
\pnum
\expects
The elements \tcode{e} of \range{first}{last}
-are partitioned with respect to the expression
+are partitioned with respect to the expression\\
\tcode{!bool(invoke(comp, value, invoke(proj, e)))}.
\pnum
@@ -8264,7 +8335,7 @@
constexpr T ranges::min(initializer_list r, Comp comp = {}, Proj proj = {});
template<@\libconcept{input_range}@ R, class Proj = identity,
@\libconcept{indirect_strict_weak_order}@, Proj>> Comp = ranges::less>
- requires @\libconcept{indirectly_copyable}@_storable, range_value_t*>
+ requires @\libconcept{indirectly_copyable_storable}@, range_value_t*>
constexpr range_value_t
ranges::min(R&& r, Comp comp = {}, Proj proj = {});
\end{itemdecl}
@@ -9104,6 +9175,18 @@
template
constexpr void iota(ForwardIterator first, ForwardIterator last, T value);
+ namespace ranges {
+ template
+ using iota_result = out_value_result;
+
+ template<@\libconcept{input_or_output_iterator}@ O, @\libconcept{sentinel_for}@ S, @\libconcept{weakly_incrementable}@ T>
+ requires @\libconcept{indirectly_writable}@
+ constexpr iota_result iota(O first, S last, T value);
+
+ template<@\libconcept{weakly_incrementable}@ T, @\libconcept{output_range}@ R>
+ constexpr iota_result, T> iota(R&& r, T value);
+ }
+
// \ref{numeric.ops.gcd}, greatest common divisor
template
constexpr common_type_t gcd(M m, N n);
@@ -10105,6 +10188,29 @@
Exactly \tcode{last - first} increments and assignments.
\end{itemdescr}
+\indexlibraryglobal{iota}%
+\begin{itemdecl}
+template<@\libconcept{input_or_output_iterator}@ O, @\libconcept{sentinel_for}@ S, @\libconcept{weakly_incrementable}@ T>
+ requires @\libconcept{indirectly_writable}@
+ constexpr ranges::iota_result ranges::iota(O first, S last, T value);
+template<@\libconcept{weakly_incrementable}@ T, @\libconcept{output_range}@ R>
+ constexpr ranges::iota_result, T> ranges::iota(R&& r, T value);
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+\effects
+Equivalent to:
+\begin{codeblock}
+while (first != last) {
+ *first = as_const(value);
+ ++first;
+ ++value;
+}
+return {std::move(first), std::move(value)};
+\end{codeblock}
+\end{itemdescr}
+
\rSec2[numeric.ops.gcd]{Greatest common divisor}
\indexlibraryglobal{gcd}%
@@ -10968,5 +11074,4 @@
Any exception thrown by \tcode{compar}\iref{res.on.exception.handling}.
\end{itemdescr}
-\xref
-ISO C 7.22.5.
+\xrefc{7.22.5}
diff --git a/source/atomics.tex b/source/atomics.tex
deleted file mode 100644
index 77967cd1ba..0000000000
--- a/source/atomics.tex
+++ /dev/null
@@ -1,3844 +0,0 @@
-%!TEX root = std.tex
-\rSec0[atomics]{Atomic operations library}
-
-\rSec1[atomics.general]{General}
-
-\pnum
-This Clause describes components for fine-grained atomic access. This access is
-provided via operations on atomic objects.
-
-\pnum
-The following subclauses describe atomics requirements and components for types
-and operations, as summarized in \tref{atomics.summary}.
-
-\begin{libsumtab}{Atomics library summary}{atomics.summary}
-\ref{atomics.alias} & Type aliases & \tcode{} \\
-\ref{atomics.order} & Order and consistency & \\
-\ref{atomics.lockfree} & Lock-free property & \\
-\ref{atomics.wait} & Waiting and notifying & \\
-\ref{atomics.ref.generic} & Class template \tcode{atomic_ref} & \\
-\ref{atomics.types.generic} & Class template \tcode{atomic} & \\
-\ref{atomics.nonmembers} & Non-member functions & \\
-\ref{atomics.flag} & Flag type and operations & \\
-\ref{atomics.fences} & Fences & \\ \rowsep
-\ref{stdatomic.h.syn} & C compatibility & \tcode{} \\
-\end{libsumtab}
-
-\rSec1[atomics.syn]{Header \tcode{} synopsis}
-
-\indexheader{atomic}%
-\begin{codeblock}
-namespace std {
- // \ref{atomics.order}, order and consistency
- enum class memory_order : @\unspec@;
- template
- T kill_dependency(T y) noexcept;
-}
-
-// \ref{atomics.lockfree}, lock-free property
-#define ATOMIC_BOOL_LOCK_FREE @\unspec@
-#define ATOMIC_CHAR_LOCK_FREE @\unspec@
-#define ATOMIC_CHAR8_T_LOCK_FREE @\unspec@
-#define ATOMIC_CHAR16_T_LOCK_FREE @\unspec@
-#define ATOMIC_CHAR32_T_LOCK_FREE @\unspec@
-#define ATOMIC_WCHAR_T_LOCK_FREE @\unspec@
-#define ATOMIC_SHORT_LOCK_FREE @\unspec@
-#define ATOMIC_INT_LOCK_FREE @\unspec@
-#define ATOMIC_LONG_LOCK_FREE @\unspec@
-#define ATOMIC_LLONG_LOCK_FREE @\unspec@
-#define ATOMIC_POINTER_LOCK_FREE @\unspec@
-
-namespace std {
- // \ref{atomics.ref.generic}, class template \tcode{atomic_ref}
- template struct atomic_ref;
- // \ref{atomics.ref.pointer}, partial specialization for pointers
- template struct atomic_ref;
-
- // \ref{atomics.types.generic}, class template \tcode{atomic}
- template struct atomic;
- // \ref{atomics.types.pointer}, partial specialization for pointers
- template struct atomic;
-
- // \ref{atomics.nonmembers}, non-member functions
- template
- bool atomic_is_lock_free(const volatile atomic*) noexcept;
- template
- bool atomic_is_lock_free(const atomic*) noexcept;
- template
- void atomic_store(volatile atomic*, typename atomic::value_type) noexcept;
- template
- void atomic_store(atomic*, typename atomic::value_type) noexcept;
- template
- void atomic_store_explicit(volatile atomic*, typename atomic::value_type,
- memory_order) noexcept;
- template
- void atomic_store_explicit(atomic*, typename atomic::value_type,
- memory_order) noexcept;
- template
- T atomic_load(const volatile atomic*) noexcept;
- template
- T atomic_load(const atomic*) noexcept;
- template
- T atomic_load_explicit(const volatile atomic*, memory_order) noexcept;
- template
- T atomic_load_explicit(const atomic*, memory_order) noexcept;
- template
- T atomic_exchange(volatile atomic*, typename atomic::value_type) noexcept;
- template
- T atomic_exchange(atomic*, typename atomic::value_type) noexcept;
- template
- T atomic_exchange_explicit(volatile atomic*, typename atomic::value_type,
- memory_order) noexcept;
- template
- T atomic_exchange_explicit(atomic*, typename atomic::value_type,
- memory_order) noexcept;
- template
- bool atomic_compare_exchange_weak(volatile atomic*,
- typename atomic::value_type*,
- typename atomic::value_type) noexcept;
- template
- bool atomic_compare_exchange_weak(atomic*,
- typename atomic::value_type*,
- typename atomic::value_type) noexcept;
- template
- bool atomic_compare_exchange_strong(volatile atomic*,
- typename atomic::value_type*,
- typename atomic::value_type) noexcept;
- template
- bool atomic_compare_exchange_strong(atomic*,
- typename atomic::value_type*,
- typename atomic::value_type) noexcept;
- template
- bool atomic_compare_exchange_weak_explicit(volatile atomic*,
- typename atomic::value_type*,
- typename atomic::value_type,
- memory_order, memory_order) noexcept;
- template
- bool atomic_compare_exchange_weak_explicit(atomic*,
- typename atomic::value_type*,
- typename atomic