diff --git a/papers/n4994.html b/papers/n4994.html
new file mode 100644
index 0000000000..1778a35243
--- /dev/null
+++ b/papers/n4994.html
@@ -0,0 +1,737 @@
+
+
+
+
+
+N4994 Editors’ Report: Programming Languages — C++
+
+
+N4994 Editors’ Report:
Programming Languages — C++
+
+Date: 2024-10-16
+
+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.
+
+New papers
+
+
+- N4993 is the
+current working draft for C++26. It replaces
+N4988.
+- N4994 is this Editors' Report.
+
+
+Draft approval
+
+The previous drafts
+N4986
+and
+N4988
+were not approved at any WG21 meeting. For approval of this draft, N4993,
+please consult the previous Editors' reports
+N4987
+and
+N4989
+as well as this one.
+
+No motions
+
+There have been no new, approved WG21 motions.
+This revision contains only editorial changes.
+
+A few of the editorial changes fix mistakes in our LaTeX sources that were
+reported to us by the ISO secretariat during the ongoing publication of C++23.
+
+Editorial changes
+
+Major editorial changes
+
+For this revision, we have reorganised several clauses and subclauses.
+As a reminder: the editorial team aims to perform only one major reorganisation
+that changes top-level clause numbers per C++ revision, and this is it for C++26.
+
+The changes create a new clause "Text processing library [text]
" that collects
+formatting, conversions, locales, regular expressions, and text-related C library
+facilities. Clauses are rearranged as:
+
+
+- Algorithms library
[algorithms]
+- Strings library
[strings]
+- Text processing library
[text]
+- Numerics library
[numerics]
+- Time library
[time]
+- Input/output library
[input.output]
+
+
+The new [text]
clause obtains the following contents:
+
+
+- Primitive numeric conversions
[charconv]
, from [utilities]
+- Formatting
[format]
, from [utilities]
+- Text encodings identification
[text.encoding]
, extracted from [localization]
+- Localization library
[localization]
+- Regular expressions library
[re]
+- C library facilities
[cctype.syn]
, [cwctype.syn]
, [cwchar.syn]
, [cuchar.syn]
, and [c.mb.wcs]
+
+
+Additionally, the following subclauses are moved:
+
+
+- Debugging
[debugging]
from [utilities]
to the end of [diagnostics]
+- Execution policies
[execpol]
from [utilities]
to the end of [algorithms.parallel]
+- Class
type_index
[type.index]
from [utilities]
to [support.rtti]
+
+
+This removes a number of unrelated clauses from the large [utilities]
clause.
+
+Finally, we spread the synopses in [containers]
out to appear right in front
+of the classes they define.
+
+Minor editorial changes
+
+A log of editorial fixes made to the working draft since N4988 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 15a43d522467d389bd9340081d65dbf17d44d255
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Mon Aug 5 12:21:56 2024 +0100
+
+ [temp.over.link] Reword to clarify that declarations correspond (#5999)
+
+commit 3c0f4cf0a03892157ebf3a472d3e9450a41f038e
+Author: Lewis Baker <lewissbaker@users.noreply.github.com>
+Date: Sun Aug 4 09:26:26 2024 +0930
+
+ [snd.expos] Fix typo in definition of SCHED-ENV exposition-only helper
+
+ Change `o1` -> `o2` to reference the expression declared as part of the definition of `SCHED-ENV`.
+
+commit 5056b86597f5ba9278601db46a415f2d76e1bc8f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Aug 2 17:38:05 2024 +0200
+
+ [temp.constr.order] Reflect fold expanded constraints in footnotes
+
+commit c92bc384b118412322f9893832508bf17f46f644
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Aug 1 12:35:50 2024 +0200
+
+ [dcl.fct] Fix obsolete phrasing when defining 'function type'
+
+commit fabbff2d812e0a99bd1162460812ec2f5399636e
+Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
+Date: Thu Aug 8 17:15:39 2024 -0400
+
+ [sequences] Consistent comma in "If X, there are no effects" (#7139)
+
+commit 04c5a0c509dbf8f9f81223d1de5bb917cd3074c5
+Author: Hana Dusíková <hanicka@hanicka.net>
+Date: Tue Aug 20 12:21:43 2024 +0200
+
+ [meta.const.eval] Fix function declaration in example (#7234)
+
+commit ab4c0663dc72f09fb8ef6c366352c9d1a68e8fa9
+Author: Vlad Serebrennikov <serebrennikov.vladislav@gmail.com>
+Date: Fri Aug 23 22:06:05 2024 +0400
+
+ [expr.prim.lambda.capture] Incorporate ellipsis into "captured by copy" definition
+
+commit 6ea6df4c96653d6696bb0133253ea0159b0f278f
+Author: Vlad Serebrennikov <serebrennikov.vladislav@gmail.com>
+Date: Sat Aug 24 23:24:01 2024 +0400
+
+ [dcl.type.elab] Remove redundant full stop (#7242)
+
+commit 24ceda755967b022e8e089d4f0cdcf4bc99a4adb
+Author: Hewill Kang <hewillk@gmail.com>
+Date: Mon Aug 26 18:29:28 2024 +0800
+
+ [exec.snd.apply,exec.schedule.from] Properly mark "see below" (#7210)
+
+commit 447b6291061d50a582f72dd42d9d6265857ded5c
+Author: Joachim Wuttke <j.wuttke@fz-juelich.de>
+Date: Mon Aug 26 22:30:39 2024 +0200
+
+ [numerics] Correct typo Bessell -> Bessel (#7244)
+
+commit db0ca108a9b44ef8f06338ecf68f1e4653be4267
+Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
+Date: Thu Aug 29 06:13:18 2024 -0400
+
+ [inplace.vector] Fix some spelling/grammar issues (#7243)
+
+commit 21e477fb6dbfa7813eb2263bfa31c748bdce589b
+Author: Casey Carter <Casey@Carter.net>
+Date: Fri Aug 30 05:07:36 2024 -0700
+
+ [lib] Remove `inline` from variable templates (#7240)
+
+commit c001805bb769fe237034151d59ddd20835a17298
+Author: A. Jiang <de34@live.cn>
+Date: Fri Aug 30 20:52:00 2024 +0800
+
+ [lib] Remove `friend class X` (#6427)
+
+ Friendship between library classes is considered an implementation detail.
+
+commit 1fafde9a04a3760debb932839791b1d2047ba432
+Author: A. Jiang <de34@live.cn>
+Date: Fri Aug 30 20:52:49 2024 +0800
+
+ [fs.class.directory.entry.general] Remove superfluous "unneeded" (#7245)
+
+commit e010cf6cde64a498c2bc4291e7e79e66e8ace79a
+Author: Vlad Serebrennikov <serebrennikov.vladislav@gmail.com>
+Date: Fri Aug 23 21:03:51 2024 +0400
+
+ [basic.scope.scope] Fix a note about declarations that do not bind names
+
+ The note is saying that declarations of qualified names do not bind names, but this is not supported by normative wording in [dcl.meaning]
+
+commit 36a1f39068e71d69e4ca534c5b72891055675e88
+Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
+Date: Wed Sep 4 10:23:14 2024 -0400
+
+ [forward.list] Replace misplaced comma with period (#7246)
+
+commit f23059bf704a48b4805db28441ec73b61054ab9d
+Author: A. Jiang <de34@live.cn>
+Date: Thu Sep 5 00:03:56 2024 +0800
+
+ [optional.syn] Use `decay_t<T>` directly instead of "see below" (#7247)
+
+commit 9d9a3777f1a571dd2648023fe70848c32aebda09
+Author: Casey Carter <Casey@Carter.net>
+Date: Sun Sep 8 12:13:53 2024 -0700
+
+ [associative.reqmts.general,unord.req.general] Fix cross-references to [container.alloc.reqmts] and [container.reqmts] (#7249)
+
+ Both paragraphs incorrectly point to [container.reqmts] instead of [container.alloc.reqmts] for "the requirements of an allocator-aware container".
+
+commit d930c5fa6728dd0b599f9c7918a2f0a0f747aaa2
+Author: Jan Schultke <me@eisenwave.net>
+Date: Mon Sep 16 20:35:33 2024 +0200
+
+ [expr.delete] Remove stray "the" between words (#7253)
+
+commit 9243ba5befaea8fd3e878e6114942db8d556a6e0
+Author: Steve Downey <sdowney@gmail.com>
+Date: Tue Sep 17 06:13:18 2024 -0400
+
+ [optional.assign] Use itemized list for operator=(U&& v) constraints (#7255)
+
+commit 4930897a2a45fa57fd9d766a24229a9e3f14f23e
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Aug 21 13:58:22 2021 +0200
+
+ [dcl.spec.general,dcl.fct.spec] Clarify duplication of decl-specifiers
+
+commit d0c00bf629f4b91d19176c2397aa3ff7c1c0ce63
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Sep 26 18:49:15 2024 +0200
+
+ [tab:lex.charset.literal] Shorten table heading
+
+ Fixes ISO/CS comment (C++23 proof)
+
+commit 945b1c071ed511d11a2152aa70e08290f91a7856
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Sep 26 19:11:58 2024 +0200
+
+ [tab:re.matchflag] Shorten table heading
+
+ Fixes ISO/CS comment (C++23 proof)
+
+commit 4e34492bc7279fedb0e066f4925860e686fa81dc
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Sep 26 19:43:50 2024 +0200
+
+ [rand.req] Fix table headers for longtable continued on following page
+
+ Fixes ISO/CS comment (C++23 proof)
+
+commit 2b1e6d2952987bf4ada8275212a7bb297bb0c1c7
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Sep 26 20:19:01 2024 +0200
+
+ [macros] Fix duplicate vertical lines visible in tables in [optional.assign]
+
+ Fixes ISO/CS comment (C++23 proof)
+
+commit 0680a08ee677e0970b4460fd614f58b122845047
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Thu Sep 26 21:59:34 2024 +0100
+
+ [ios.init] Remove unused Init::init_cnt static member (#7263)
+
+ The text that made use of this variable was removed by LWG1123 and has
+ not been present in the WP since N3090. The effects of Init construction
+ and destruction are specified entirely without the use of this variable,
+ so it serves no purpose now.
+
+commit afdd158f555892507bc44c6d372c3b45a7f09832
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Sep 27 00:09:11 2024 +0200
+
+ [styles] Format title of \codeblocktu using 'caption' package
+
+ This restores the C++20 status of the formatting.
+
+commit 2b3e09e2cc773b7205310917c5a6b2bdd87340af
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue Oct 1 03:22:29 2024 -0700
+
+ [inplace.vector.cons] "Constructs an object" is redundant (#7252)
+
+commit 70954edf0b2c915d9b2ca4a1cff99b1c1cba2089
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Tue Oct 1 23:09:04 2024 -0400
+
+ [depr.lit] Fix grammar according to P2361R6
+
+ P2361R6 introduced the notion of unevaluated strings, and
+ updated the grammar for literal operator function accodingly.
+ Unfortunely, the corresponding grammar reference that was
+ deprecated was not similarly updated.
+
+commit 08b167d5476c9fd02a7a0484ae031cb358a99ddf
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Sat Oct 5 22:24:02 2024 +0100
+
+ [priqueue.cons.alloc] Add missing initialization for comp (#7291)
+
+ This is consistent with p2 and p8 which also value-initialize it.
+
+commit 738b14f990e0575a3ca63b579d87edb5a6133ffb
+Author: Casey Carter <Casey@Carter.net>
+Date: Sat Oct 5 15:03:04 2024 -0700
+
+ [array.creation] Clarify "Mandates" for `to_array` overloads (#7286)
+
+ It's confusing that these `to_array` overloads require `T` to be constructible from various types, when they actually construct `remove_cv_t<T>` objects. We experts know that initialization doesn't depend on the cv-qualification of the target type ([dcl.init.general]/16), but there's no need to make readers jump through hoops to understand the spec.
+
+commit d5c9f2d248860e8e7de78f595b93a8b01c7e02c8
+Author: Lewis Baker <lewissbaker@users.noreply.github.com>
+Date: Tue Oct 8 21:07:48 2024 +1030
+
+ [exec.split,exec.when.all] Fix typo stop_callback_of_t -> stop_callback_for_t (#7295)
+
+commit 58c01ba5765e8c91ce4aab462d25247167a7e481
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Tue Oct 8 11:38:42 2024 +0100
+
+ [re.grammar] Add missing backslash to UnicodeEscapeSequence example (#7290)
+
+commit ebef68dd9f1c3bccfe06d14eb83c05a7a35dcec3
+Author: Lewis Baker <lewissbaker@users.noreply.github.com>
+Date: Tue Oct 8 22:06:23 2024 +1030
+
+ [exec.just] Add missing LaTeX escape for product-type construction (#7216)
+
+commit 7ea8f59e19842e720360f15b64c2199ea27641ac
+Author: A. Jiang <de34@live.cn>
+Date: Thu Oct 10 17:53:54 2024 +0800
+
+ [mutex.syn] Add missing ',' for consistency
+
+commit 7c6322a59e3359c5002357831328b25939cd5383
+Author: Lewis Baker <lewissbaker@users.noreply.github.com>
+Date: Sun Oct 13 04:07:30 2024 +1030
+
+ [stoptoken.concepts] Remove redundant 'swappable<Token>' clause from 'stoppable_token' concept (#7299)
+
+ The `stoppable_token<Token>` concept requires both `copyable<Token>` and `swappable<Token>`. However, the `copyable<Token>` requirement already subsumes `movable<Token>`, which subsumes `swappable<Token>`.
+
+ Therefore the requirement for `swappable<Token>` can be removed from the `stoppable_token` concept definition with no semantic change.
+
+commit 9bf42221ab5a52ef10cb980a22e8a9617dbbf18b
+Author: Andreas Krug <153394595+Andreas-Krug@users.noreply.github.com>
+Date: Sat Oct 12 22:39:57 2024 +0200
+
+ [rcu.syn] Add missing ',' in comment (#7301)
+
+commit a0411db859cf1eabc2be24a5d2add4eaf288dac5
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Oct 14 12:30:30 2024 +0200
+
+ [expr.const] Add paragraph number for general example
+
+commit 3982d5d5758df949e3c2e0174c72758189be6f2e
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Mon Oct 14 08:54:22 2024 -0400
+
+ [except.ctor] Retitle subclause as 'stack unwinding' (#7282)
+
+ The purpose of this subclause is to define stack unwinding,
+ which in specified in terms of the lifetime of objects, not
+ just class types. Hence, while much of the text is addressing
+ interactions with contructors and destructors (the original
+ subclause title) it does more than just that.
+
+commit 4eb30d3d618ef44ae3925a1a62090bbbbfe8cabf
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Wed Oct 16 07:39:15 2024 -0400
+
+ [cpp.subst] change "proprocessing file" to "translation unit" (#7293)
+
+ The term 'preprocessing translation unit' is defined in [lex.separate]
+ while the term 'preprocessing file' is never defined, and is
+ not used anywhere else in the standard. Prefer to use the
+ specified term, as it reasonably covers this case.
+
+commit 40228c690cb8d2ac27bd54bdddeabe425bd022b2
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Wed Oct 16 07:40:20 2024 -0400
+
+ [cpp.import] Change "directive" to "definition" in "active macro directive" (#7292)
+
+ The term 'active macro directive' is defined in p6, but never used.
+ Meanwhile, there are multiple uses of 'active macro definition' but
+ that term is never defined, including in the very sentence following
+ the definition of the unused term, and in other clauses that
+ cross-reference to this clause for their definition.
+
+commit 47da0e8b88bf1aa20aa474edf04a6d29e70b7563
+Author: Anders Schau Knatten <anders@knatten.org>
+Date: Wed Oct 16 13:41:26 2024 +0200
+
+ [over.oper.general] Change "basic type" to "fundamental type" (#7287)
+
+ The term "basic type" is used twice in this note but it's never defined anywhere, nor used.
+
+commit 7fe7519a5af674cd914344c650529f743fd92fc2
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Tue Oct 1 22:13:53 2024 -0400
+
+ [except.handle] Remove confusing comparison to variadic functions
+
+ The analogy that the ellipsis in an exception handler was similar to an
+ ellipsis in a function declaration may have made sense at one time, but
+ the comparison with a syntax using a macro based API calling 'va_arg'
+ to access its contents --- something that is not possible for an
+ exception handler --- seems more confusing than helpful today.
+
+commit d225f51f8cb799fb014cb73beb7dcccc044392cc
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Tue Aug 20 11:58:24 2024 +0100
+
+ [text.encoding.aliases] Add note about what isn't required
+
+ Make it explicit that `copyable` is intended, rather than `semiregular`,
+ and that the return types of `begin()` and `end()` can differ.
+
+ Also remove a FIXME comment for something that doesn't need fixing.
+ These requirements on a type are specified in our usual form, it would
+ be wrong to use _Remarks_: or _Requires_: here.
+
+commit 6338d95ae620f5e4d37d27a39a40f9de9af37b77
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Wed Oct 16 08:47:02 2024 -0400
+
+ [lex.charset] Introduce parent subclause [lex.char] for character sets and UCNs (#7067)
+
+ The grammar for universal-character-name is oddly sandwiched into the
+ middle of the subclause talking about the different character sets used
+ by the standard. To improve the flow, extract that grammar into its own
+ subclause.
+
+ In the extraction, I make three other clarifying changes. First, describe
+ this new subclause as 'a way to name any element of the of the translation
+ character set using just the basic character set' rather than simply
+ 'a way to name other characters'. Then, merge the sentence on where universal
+ characters are prohibited into the new intro sentence describing universal
+ characters, to make clear that there is no contradiction between nominating
+ a character, and how that character can be used. Finally, remove the 'one of'
+ in the grammar where there is only one option to choose.
+
+commit 9b6b757f34bf4a1eeb6a66481a444b83f1ee5770
+Author: Matthias Kretz <m.kretz@gsi.de>
+Date: Thu Sep 12 21:41:02 2024 +0200
+
+ [sf.cmath.assoc.laguerre,sf.cmath.assoc.legendre] Add reference to eq
+
+ The associated Laguerre/Legendre functions build on the
+ Laguerre/Legendre functions, which are defined in different equations.
+ Point to them from the associated functions.
+
+ Also use the correct \ell as used in the formula.
+
+commit 0456a32e41772b0a68b4055fb4e6533cb64e0e3d
+Author: Yihe Li <winmikedows@hotmail.com>
+Date: Thu Sep 5 23:59:58 2024 +0800
+
+ [utility.syn, flat.map.defn] Remove all [[nodiscard]] from library wording
+
+commit 8b2c7fc3c58bd109c82a016ee2cc5b691bdcd853
+Author: Eisenwave <me@eisenwave.net>
+Date: Mon Jun 10 23:22:04 2024 +0200
+
+ [expr.new] Extend example for new-expressions with zero size arrays
+
+commit fb34daf31b53389cc35b3f5f65a69785fc6dd1de
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Tue Jul 23 22:32:52 2024 -0400
+
+ [char.traits] Better cross-reference several headers
+
+commit 220cb742e8056ad033ad8dce5630d7d3acaa4c7d
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 15:37:39 2024 +0100
+
+ [debugging] Move [debugging] to the end of Clause [diagnostics]
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit 7a2dafa6b4cca842e264bfd544b69452fb448c39
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 15:43:39 2024 +0100
+
+ [execpol] Move [execpol] to the end of subclause [algorithms.parallel]
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit 93e2e1c6bcf5e9c3e551d964978e8bf241c392a4
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 15:52:54 2024 +0100
+
+ [type.index] Move [type.index] into subclause [support.rtti]
+
+ The subclause is integrated into the structure of [support.rtti],
+ meaning that the synopsis becomes a sibling of the rest, and the
+ subdivisions of the remaining text are removed (in analogy with
+ [type.info]).
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit cdb120a4aee270f4e6e40dd7b07885c70651224e
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 17:25:51 2024 +0100
+
+ [containers] Move synopses right in front of the classes they define
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit b7e389c9feca4839f77ad60985f509e01f96a399
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 15:27:06 2024 +0100
+
+ [std] Reorder clauses: [algorithm], [strings]
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit 5512050c2db44d87566d25ce4f70b530624cb330
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 15:36:47 2024 +0100
+
+ [std] Create new top-level Clause [text], following [strings]
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit fc6f670832980fc7b8219cb6945592cbe45d9239
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 19:01:21 2024 +0100
+
+ [text, re] Move [re] into [text]
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit 5d106373aada591874ab5e38301502b3012e0502
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 19:06:03 2024 +0100
+
+ [text, localization] Move [localization] into [text]
+
+ The subclause [text.encodings] is extracted and elevated to a sibling
+ subclause of [localization].
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit 804846a56f7e73dafe4ebd621fa81097d2e94603
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 20:15:42 2024 +0100
+
+ [charconv, format] Move [charconv], [format] to [text]
+
+ Part of the C++26 clause restructuring (#5315).
+
+commit 4b1a9a76c29c31cc3f679a8bdb1603842baf3501
+Author: Thomas Köppe <tkoeppe@google.com>
+Date: Wed Oct 16 20:31:33 2024 +0100
+
+ [text, c.strings] Move text-related parts of [c.strings] to [text]
+
+ The text-related subclauses [cctype.syn], [cwctype.syn], [cwchar.syn],
+ [cuchar.syn], and [c.mb.wcs] are moved to a new subclause [text.c.strings].
+
+ Part of the C++26 clause restructuring (#5226, #5315).
+
+commit 8003b627a7e336c2e9f350a3bb1ad395ec7c1cc7
+Author: lprv <100177227+lprv@users.noreply.github.com>
+Date: Wed Oct 16 19:41:35 2024 +0000
+
+ [expr, temp.arg.nontype] Use 'pointer to' instead of 'address of' (#6174)
+
+ Specifically, in:
+ * [expr.prim.lambda.closure]p8, p11
+ * [expr.const]p13.3
+ * [temp.arg.nontype]p3
+
+commit 198e991fed47efcd8b7fe1ad98ecde4d8722a201
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Wed Oct 2 15:55:49 2024 -0400
+
+ [except.handle] group all paragraphs on searching for handler
+
+ This commit moves all of the paragraphs involved in the search for a
+ handler for an exception into a single logical sequence.
+
+ After this change, [except.spec] deals only with specifying the
+ 'noexcept' function decorator and its interaction with the
+ 'noexcept' operator, and contains no text regarding exceptions
+ themselves. It might be appropriate to move that subclause into
+ the [dcl] structure at a future date.
+
+
+
diff --git a/papers/n4994.md b/papers/n4994.md
new file mode 100644
index 0000000000..223aaa59bd
--- /dev/null
+++ b/papers/n4994.md
@@ -0,0 +1,590 @@
+# N4994 Editors' Report -- Programming Languages -- C++
+
+Date: 2024-10-16
+
+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.
+
+## New papers
+
+ * [N4993](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4993.pdf) is the
+ current working draft for C++26. It replaces
+ [N4988](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4988.pdf).
+ * N4994 is this Editors' Report.
+
+## Draft approval
+
+The previous drafts
+[N4986](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4986.pdf)
+and
+[N4988](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4988.pdf)
+were not approved at any WG21 meeting. For approval of this draft, N4993,
+please consult the previous Editors' reports
+[N4987](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4987.html)
+and
+[N4989](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4989.html)
+as well as this one.
+
+## No motions
+
+There have been no new, approved WG21 motions.
+This revision contains only editorial changes.
+
+A few of the editorial changes fix mistakes in our LaTeX sources that were
+reported to us by the ISO secretariat during the ongoing publication of C++23.
+
+## Editorial changes
+
+### Major editorial changes
+
+For this revision, we have reorganised several clauses and subclauses.
+As a reminder: the editorial team aims to perform only one major reorganisation
+that changes top-level clause numbers per C++ revision, and this is it for C++26.
+
+The changes create a new clause "Text processing library `[text]`" that collects
+formatting, conversions, locales, regular expressions, and text-related C library
+facilities. Clauses are rearranged as:
+
+ * Algorithms library `[algorithms]`
+ * Strings library `[strings]`
+ * Text processing library `[text]`
+ * Numerics library `[numerics]`
+ * Time library `[time]`
+ * Input/output library `[input.output]`
+
+The new `[text]` clause obtains the following contents:
+
+ * Primitive numeric conversions `[charconv]`, from `[utilities]`
+ * Formatting `[format]`, from `[utilities]`
+ * Text encodings identification `[text.encoding]`, extracted from `[localization]`
+ * Localization library `[localization]`
+ * Regular expressions library `[re]`
+ * C library facilities `[cctype.syn]`, `[cwctype.syn]`, `[cwchar.syn]`, `[cuchar.syn]`, and `[c.mb.wcs]`
+
+Additionally, the following subclauses are moved:
+
+* Debugging `[debugging]` from `[utilities]` to the end of `[diagnostics]`
+* Execution policies `[execpol]` from `[utilities]` to the end of `[algorithms.parallel]`
+* Class `type_index` `[type.index]` from `[utilities]` to `[support.rtti]`
+
+This removes a number of unrelated clauses from the large `[utilities]` clause.
+
+Finally, we spread the synopses in `[containers]` out to appear right in front
+of the classes they define.
+
+### Minor editorial changes
+
+A log of editorial fixes made to the working draft since N4988 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/n4988...n4993).
+
+ commit 15a43d522467d389bd9340081d65dbf17d44d255
+ Author: Thomas Köppe
+ Date: Mon Aug 5 12:21:56 2024 +0100
+
+ [temp.over.link] Reword to clarify that declarations correspond (#5999)
+
+ commit 3c0f4cf0a03892157ebf3a472d3e9450a41f038e
+ Author: Lewis Baker
+ Date: Sun Aug 4 09:26:26 2024 +0930
+
+ [snd.expos] Fix typo in definition of SCHED-ENV exposition-only helper
+
+ Change `o1` -> `o2` to reference the expression declared as part of the definition of `SCHED-ENV`.
+
+ commit 5056b86597f5ba9278601db46a415f2d76e1bc8f
+ Author: Jens Maurer
+ Date: Fri Aug 2 17:38:05 2024 +0200
+
+ [temp.constr.order] Reflect fold expanded constraints in footnotes
+
+ commit c92bc384b118412322f9893832508bf17f46f644
+ Author: Jens Maurer
+ Date: Thu Aug 1 12:35:50 2024 +0200
+
+ [dcl.fct] Fix obsolete phrasing when defining 'function type'
+
+ commit fabbff2d812e0a99bd1162460812ec2f5399636e
+ Author: Arthur O'Dwyer
+ Date: Thu Aug 8 17:15:39 2024 -0400
+
+ [sequences] Consistent comma in "If X, there are no effects" (#7139)
+
+ commit 04c5a0c509dbf8f9f81223d1de5bb917cd3074c5
+ Author: Hana Dusíková
+ Date: Tue Aug 20 12:21:43 2024 +0200
+
+ [meta.const.eval] Fix function declaration in example (#7234)
+
+ commit ab4c0663dc72f09fb8ef6c366352c9d1a68e8fa9
+ Author: Vlad Serebrennikov
+ Date: Fri Aug 23 22:06:05 2024 +0400
+
+ [expr.prim.lambda.capture] Incorporate ellipsis into "captured by copy" definition
+
+ commit 6ea6df4c96653d6696bb0133253ea0159b0f278f
+ Author: Vlad Serebrennikov
+ Date: Sat Aug 24 23:24:01 2024 +0400
+
+ [dcl.type.elab] Remove redundant full stop (#7242)
+
+ commit 24ceda755967b022e8e089d4f0cdcf4bc99a4adb
+ Author: Hewill Kang
+ Date: Mon Aug 26 18:29:28 2024 +0800
+
+ [exec.snd.apply,exec.schedule.from] Properly mark "see below" (#7210)
+
+ commit 447b6291061d50a582f72dd42d9d6265857ded5c
+ Author: Joachim Wuttke
+ Date: Mon Aug 26 22:30:39 2024 +0200
+
+ [numerics] Correct typo Bessell -> Bessel (#7244)
+
+ commit db0ca108a9b44ef8f06338ecf68f1e4653be4267
+ Author: Arthur O'Dwyer
+ Date: Thu Aug 29 06:13:18 2024 -0400
+
+ [inplace.vector] Fix some spelling/grammar issues (#7243)
+
+ commit 21e477fb6dbfa7813eb2263bfa31c748bdce589b
+ Author: Casey Carter
+ Date: Fri Aug 30 05:07:36 2024 -0700
+
+ [lib] Remove `inline` from variable templates (#7240)
+
+ commit c001805bb769fe237034151d59ddd20835a17298
+ Author: A. Jiang
+ Date: Fri Aug 30 20:52:00 2024 +0800
+
+ [lib] Remove `friend class X` (#6427)
+
+ Friendship between library classes is considered an implementation detail.
+
+ commit 1fafde9a04a3760debb932839791b1d2047ba432
+ Author: A. Jiang
+ Date: Fri Aug 30 20:52:49 2024 +0800
+
+ [fs.class.directory.entry.general] Remove superfluous "unneeded" (#7245)
+
+ commit e010cf6cde64a498c2bc4291e7e79e66e8ace79a
+ Author: Vlad Serebrennikov
+ Date: Fri Aug 23 21:03:51 2024 +0400
+
+ [basic.scope.scope] Fix a note about declarations that do not bind names
+
+ The note is saying that declarations of qualified names do not bind names, but this is not supported by normative wording in [dcl.meaning]
+
+ commit 36a1f39068e71d69e4ca534c5b72891055675e88
+ Author: Arthur O'Dwyer
+ Date: Wed Sep 4 10:23:14 2024 -0400
+
+ [forward.list] Replace misplaced comma with period (#7246)
+
+ commit f23059bf704a48b4805db28441ec73b61054ab9d
+ Author: A. Jiang
+ Date: Thu Sep 5 00:03:56 2024 +0800
+
+ [optional.syn] Use `decay_t` directly instead of "see below" (#7247)
+
+ commit 9d9a3777f1a571dd2648023fe70848c32aebda09
+ Author: Casey Carter
+ Date: Sun Sep 8 12:13:53 2024 -0700
+
+ [associative.reqmts.general,unord.req.general] Fix cross-references to [container.alloc.reqmts] and [container.reqmts] (#7249)
+
+ Both paragraphs incorrectly point to [container.reqmts] instead of [container.alloc.reqmts] for "the requirements of an allocator-aware container".
+
+ commit d930c5fa6728dd0b599f9c7918a2f0a0f747aaa2
+ Author: Jan Schultke
+ Date: Mon Sep 16 20:35:33 2024 +0200
+
+ [expr.delete] Remove stray "the" between words (#7253)
+
+ commit 9243ba5befaea8fd3e878e6114942db8d556a6e0
+ Author: Steve Downey
+ Date: Tue Sep 17 06:13:18 2024 -0400
+
+ [optional.assign] Use itemized list for operator=(U&& v) constraints (#7255)
+
+ commit 4930897a2a45fa57fd9d766a24229a9e3f14f23e
+ Author: Jens Maurer
+ Date: Sat Aug 21 13:58:22 2021 +0200
+
+ [dcl.spec.general,dcl.fct.spec] Clarify duplication of decl-specifiers
+
+ commit d0c00bf629f4b91d19176c2397aa3ff7c1c0ce63
+ Author: Jens Maurer
+ Date: Thu Sep 26 18:49:15 2024 +0200
+
+ [tab:lex.charset.literal] Shorten table heading
+
+ Fixes ISO/CS comment (C++23 proof)
+
+ commit 945b1c071ed511d11a2152aa70e08290f91a7856
+ Author: Jens Maurer
+ Date: Thu Sep 26 19:11:58 2024 +0200
+
+ [tab:re.matchflag] Shorten table heading
+
+ Fixes ISO/CS comment (C++23 proof)
+
+ commit 4e34492bc7279fedb0e066f4925860e686fa81dc
+ Author: Jens Maurer
+ Date: Thu Sep 26 19:43:50 2024 +0200
+
+ [rand.req] Fix table headers for longtable continued on following page
+
+ Fixes ISO/CS comment (C++23 proof)
+
+ commit 2b1e6d2952987bf4ada8275212a7bb297bb0c1c7
+ Author: Jens Maurer
+ Date: Thu Sep 26 20:19:01 2024 +0200
+
+ [macros] Fix duplicate vertical lines visible in tables in [optional.assign]
+
+ Fixes ISO/CS comment (C++23 proof)
+
+ commit 0680a08ee677e0970b4460fd614f58b122845047
+ Author: Jonathan Wakely
+ Date: Thu Sep 26 21:59:34 2024 +0100
+
+ [ios.init] Remove unused Init::init_cnt static member (#7263)
+
+ The text that made use of this variable was removed by LWG1123 and has
+ not been present in the WP since N3090. The effects of Init construction
+ and destruction are specified entirely without the use of this variable,
+ so it serves no purpose now.
+
+ commit afdd158f555892507bc44c6d372c3b45a7f09832
+ Author: Jens Maurer
+ Date: Fri Sep 27 00:09:11 2024 +0200
+
+ [styles] Format title of \codeblocktu using 'caption' package
+
+ This restores the C++20 status of the formatting.
+
+ commit 2b3e09e2cc773b7205310917c5a6b2bdd87340af
+ Author: Casey Carter
+ Date: Tue Oct 1 03:22:29 2024 -0700
+
+ [inplace.vector.cons] "Constructs an object" is redundant (#7252)
+
+ commit 70954edf0b2c915d9b2ca4a1cff99b1c1cba2089
+ Author: Alisdair Meredith
+ Date: Tue Oct 1 23:09:04 2024 -0400
+
+ [depr.lit] Fix grammar according to P2361R6
+
+ P2361R6 introduced the notion of unevaluated strings, and
+ updated the grammar for literal operator function accodingly.
+ Unfortunely, the corresponding grammar reference that was
+ deprecated was not similarly updated.
+
+ commit 08b167d5476c9fd02a7a0484ae031cb358a99ddf
+ Author: Jonathan Wakely
+ Date: Sat Oct 5 22:24:02 2024 +0100
+
+ [priqueue.cons.alloc] Add missing initialization for comp (#7291)
+
+ This is consistent with p2 and p8 which also value-initialize it.
+
+ commit 738b14f990e0575a3ca63b579d87edb5a6133ffb
+ Author: Casey Carter
+ Date: Sat Oct 5 15:03:04 2024 -0700
+
+ [array.creation] Clarify "Mandates" for `to_array` overloads (#7286)
+
+ It's confusing that these `to_array` overloads require `T` to be constructible from various types, when they actually construct `remove_cv_t` objects. We experts know that initialization doesn't depend on the cv-qualification of the target type ([dcl.init.general]/16), but there's no need to make readers jump through hoops to understand the spec.
+
+ commit d5c9f2d248860e8e7de78f595b93a8b01c7e02c8
+ Author: Lewis Baker
+ Date: Tue Oct 8 21:07:48 2024 +1030
+
+ [exec.split,exec.when.all] Fix typo stop_callback_of_t -> stop_callback_for_t (#7295)
+
+ commit 58c01ba5765e8c91ce4aab462d25247167a7e481
+ Author: Jonathan Wakely
+ Date: Tue Oct 8 11:38:42 2024 +0100
+
+ [re.grammar] Add missing backslash to UnicodeEscapeSequence example (#7290)
+
+ commit ebef68dd9f1c3bccfe06d14eb83c05a7a35dcec3
+ Author: Lewis Baker
+ Date: Tue Oct 8 22:06:23 2024 +1030
+
+ [exec.just] Add missing LaTeX escape for product-type construction (#7216)
+
+ commit 7ea8f59e19842e720360f15b64c2199ea27641ac
+ Author: A. Jiang
+ Date: Thu Oct 10 17:53:54 2024 +0800
+
+ [mutex.syn] Add missing ',' for consistency
+
+ commit 7c6322a59e3359c5002357831328b25939cd5383
+ Author: Lewis Baker
+ Date: Sun Oct 13 04:07:30 2024 +1030
+
+ [stoptoken.concepts] Remove redundant 'swappable' clause from 'stoppable_token' concept (#7299)
+
+ The `stoppable_token` concept requires both `copyable` and `swappable`. However, the `copyable` requirement already subsumes `movable`, which subsumes `swappable`.
+
+ Therefore the requirement for `swappable` can be removed from the `stoppable_token` concept definition with no semantic change.
+
+ commit 9bf42221ab5a52ef10cb980a22e8a9617dbbf18b
+ Author: Andreas Krug <153394595+Andreas-Krug@users.noreply.github.com>
+ Date: Sat Oct 12 22:39:57 2024 +0200
+
+ [rcu.syn] Add missing ',' in comment (#7301)
+
+ commit a0411db859cf1eabc2be24a5d2add4eaf288dac5
+ Author: Jens Maurer
+ Date: Mon Oct 14 12:30:30 2024 +0200
+
+ [expr.const] Add paragraph number for general example
+
+ commit 3982d5d5758df949e3c2e0174c72758189be6f2e
+ Author: Alisdair Meredith
+ Date: Mon Oct 14 08:54:22 2024 -0400
+
+ [except.ctor] Retitle subclause as 'stack unwinding' (#7282)
+
+ The purpose of this subclause is to define stack unwinding,
+ which in specified in terms of the lifetime of objects, not
+ just class types. Hence, while much of the text is addressing
+ interactions with contructors and destructors (the original
+ subclause title) it does more than just that.
+
+ commit 4eb30d3d618ef44ae3925a1a62090bbbbfe8cabf
+ Author: Alisdair Meredith
+ Date: Wed Oct 16 07:39:15 2024 -0400
+
+ [cpp.subst] change "proprocessing file" to "translation unit" (#7293)
+
+ The term 'preprocessing translation unit' is defined in [lex.separate]
+ while the term 'preprocessing file' is never defined, and is
+ not used anywhere else in the standard. Prefer to use the
+ specified term, as it reasonably covers this case.
+
+ commit 40228c690cb8d2ac27bd54bdddeabe425bd022b2
+ Author: Alisdair Meredith
+ Date: Wed Oct 16 07:40:20 2024 -0400
+
+ [cpp.import] Change "directive" to "definition" in "active macro directive" (#7292)
+
+ The term 'active macro directive' is defined in p6, but never used.
+ Meanwhile, there are multiple uses of 'active macro definition' but
+ that term is never defined, including in the very sentence following
+ the definition of the unused term, and in other clauses that
+ cross-reference to this clause for their definition.
+
+ commit 47da0e8b88bf1aa20aa474edf04a6d29e70b7563
+ Author: Anders Schau Knatten
+ Date: Wed Oct 16 13:41:26 2024 +0200
+
+ [over.oper.general] Change "basic type" to "fundamental type" (#7287)
+
+ The term "basic type" is used twice in this note but it's never defined anywhere, nor used.
+
+ commit 7fe7519a5af674cd914344c650529f743fd92fc2
+ Author: Alisdair Meredith
+ Date: Tue Oct 1 22:13:53 2024 -0400
+
+ [except.handle] Remove confusing comparison to variadic functions
+
+ The analogy that the ellipsis in an exception handler was similar to an
+ ellipsis in a function declaration may have made sense at one time, but
+ the comparison with a syntax using a macro based API calling 'va_arg'
+ to access its contents --- something that is not possible for an
+ exception handler --- seems more confusing than helpful today.
+
+ commit d225f51f8cb799fb014cb73beb7dcccc044392cc
+ Author: Jonathan Wakely
+ Date: Tue Aug 20 11:58:24 2024 +0100
+
+ [text.encoding.aliases] Add note about what isn't required
+
+ Make it explicit that `copyable` is intended, rather than `semiregular`,
+ and that the return types of `begin()` and `end()` can differ.
+
+ Also remove a FIXME comment for something that doesn't need fixing.
+ These requirements on a type are specified in our usual form, it would
+ be wrong to use _Remarks_: or _Requires_: here.
+
+ commit 6338d95ae620f5e4d37d27a39a40f9de9af37b77
+ Author: Alisdair Meredith
+ Date: Wed Oct 16 08:47:02 2024 -0400
+
+ [lex.charset] Introduce parent subclause [lex.char] for character sets and UCNs (#7067)
+
+ The grammar for universal-character-name is oddly sandwiched into the
+ middle of the subclause talking about the different character sets used
+ by the standard. To improve the flow, extract that grammar into its own
+ subclause.
+
+ In the extraction, I make three other clarifying changes. First, describe
+ this new subclause as 'a way to name any element of the of the translation
+ character set using just the basic character set' rather than simply
+ 'a way to name other characters'. Then, merge the sentence on where universal
+ characters are prohibited into the new intro sentence describing universal
+ characters, to make clear that there is no contradiction between nominating
+ a character, and how that character can be used. Finally, remove the 'one of'
+ in the grammar where there is only one option to choose.
+
+ commit 9b6b757f34bf4a1eeb6a66481a444b83f1ee5770
+ Author: Matthias Kretz
+ Date: Thu Sep 12 21:41:02 2024 +0200
+
+ [sf.cmath.assoc.laguerre,sf.cmath.assoc.legendre] Add reference to eq
+
+ The associated Laguerre/Legendre functions build on the
+ Laguerre/Legendre functions, which are defined in different equations.
+ Point to them from the associated functions.
+
+ Also use the correct \ell as used in the formula.
+
+ commit 0456a32e41772b0a68b4055fb4e6533cb64e0e3d
+ Author: Yihe Li
+ Date: Thu Sep 5 23:59:58 2024 +0800
+
+ [utility.syn, flat.map.defn] Remove all [[nodiscard]] from library wording
+
+ commit 8b2c7fc3c58bd109c82a016ee2cc5b691bdcd853
+ Author: Eisenwave
+ Date: Mon Jun 10 23:22:04 2024 +0200
+
+ [expr.new] Extend example for new-expressions with zero size arrays
+
+ commit fb34daf31b53389cc35b3f5f65a69785fc6dd1de
+ Author: Alisdair Meredith
+ Date: Tue Jul 23 22:32:52 2024 -0400
+
+ [char.traits] Better cross-reference several headers
+
+ commit 220cb742e8056ad033ad8dce5630d7d3acaa4c7d
+ Author: Thomas Köppe
+ Date: Wed Oct 16 15:37:39 2024 +0100
+
+ [debugging] Move [debugging] to the end of Clause [diagnostics]
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit 7a2dafa6b4cca842e264bfd544b69452fb448c39
+ Author: Thomas Köppe
+ Date: Wed Oct 16 15:43:39 2024 +0100
+
+ [execpol] Move [execpol] to the end of subclause [algorithms.parallel]
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit 93e2e1c6bcf5e9c3e551d964978e8bf241c392a4
+ Author: Thomas Köppe
+ Date: Wed Oct 16 15:52:54 2024 +0100
+
+ [type.index] Move [type.index] into subclause [support.rtti]
+
+ The subclause is integrated into the structure of [support.rtti],
+ meaning that the synopsis becomes a sibling of the rest, and the
+ subdivisions of the remaining text are removed (in analogy with
+ [type.info]).
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit cdb120a4aee270f4e6e40dd7b07885c70651224e
+ Author: Thomas Köppe
+ Date: Wed Oct 16 17:25:51 2024 +0100
+
+ [containers] Move synopses right in front of the classes they define
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit b7e389c9feca4839f77ad60985f509e01f96a399
+ Author: Thomas Köppe
+ Date: Wed Oct 16 15:27:06 2024 +0100
+
+ [std] Reorder clauses: [algorithm], [strings]
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit 5512050c2db44d87566d25ce4f70b530624cb330
+ Author: Thomas Köppe
+ Date: Wed Oct 16 15:36:47 2024 +0100
+
+ [std] Create new top-level Clause [text], following [strings]
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit fc6f670832980fc7b8219cb6945592cbe45d9239
+ Author: Thomas Köppe
+ Date: Wed Oct 16 19:01:21 2024 +0100
+
+ [text, re] Move [re] into [text]
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit 5d106373aada591874ab5e38301502b3012e0502
+ Author: Thomas Köppe
+ Date: Wed Oct 16 19:06:03 2024 +0100
+
+ [text, localization] Move [localization] into [text]
+
+ The subclause [text.encodings] is extracted and elevated to a sibling
+ subclause of [localization].
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit 804846a56f7e73dafe4ebd621fa81097d2e94603
+ Author: Thomas Köppe
+ Date: Wed Oct 16 20:15:42 2024 +0100
+
+ [charconv, format] Move [charconv], [format] to [text]
+
+ Part of the C++26 clause restructuring (#5315).
+
+ commit 4b1a9a76c29c31cc3f679a8bdb1603842baf3501
+ Author: Thomas Köppe
+ Date: Wed Oct 16 20:31:33 2024 +0100
+
+ [text, c.strings] Move text-related parts of [c.strings] to [text]
+
+ The text-related subclauses [cctype.syn], [cwctype.syn], [cwchar.syn],
+ [cuchar.syn], and [c.mb.wcs] are moved to a new subclause [text.c.strings].
+
+ Part of the C++26 clause restructuring (#5226, #5315).
+
+ commit 8003b627a7e336c2e9f350a3bb1ad395ec7c1cc7
+ Author: lprv <100177227+lprv@users.noreply.github.com>
+ Date: Wed Oct 16 19:41:35 2024 +0000
+
+ [expr, temp.arg.nontype] Use 'pointer to' instead of 'address of' (#6174)
+
+ Specifically, in:
+ * [expr.prim.lambda.closure]p8, p11
+ * [expr.const]p13.3
+ * [temp.arg.nontype]p3
+
+ commit 198e991fed47efcd8b7fe1ad98ecde4d8722a201
+ Author: Alisdair Meredith
+ Date: Wed Oct 2 15:55:49 2024 -0400
+
+ [except.handle] group all paragraphs on searching for handler
+
+ This commit moves all of the paragraphs involved in the search for a
+ handler for an exception into a single logical sequence.
+
+ After this change, [except.spec] deals only with specifying the
+ 'noexcept' function decorator and its interaction with the
+ 'noexcept' operator, and contains no text regarding exceptions
+ themselves. It might be appropriate to move that subclause into
+ the [dcl] structure at a future date.
diff --git a/papers/wd-index.md b/papers/wd-index.md
index 83e6984ee2..bf7c4b1679 100644
--- a/papers/wd-index.md
+++ b/papers/wd-index.md
@@ -51,3 +51,4 @@
* [N4981](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4981.pdf) 2024-03 C++ Working Draft
* [N4986](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4986.pdf) 2024-06 C++ Working Draft
* [N4986](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4988.pdf) 2024-08 C++ Working Draft
+ * [N4986](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/n4993.pdf) 2024-10 C++ Working Draft
diff --git a/source/algorithms.tex b/source/algorithms.tex
index 62f32fb35c..a8c3809b34 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
@@ -17,15 +17,15 @@
\begin{libsumtab}{Algorithms library summary}{algorithms.summary}
\ref{algorithms.requirements} & Algorithms requirements & \\
-\ref{algorithms.parallel} & Parallel algorithms & \\ \rowsep
-\ref{algorithms.results} & Algorithm result types & \tcode{} \\
+\ref{algorithms.parallel} & Parallel algorithms & \tcode{} \\ \rowsep
+\ref{algorithms.results} & Algorithm result types & \tcode{} \\
\ref{alg.nonmodifying} & Non-modifying sequence operations & \\
\ref{alg.modifying.operations} & Mutating sequence operations & \\
\ref{alg.sorting} & Sorting and related operations & \\ \rowsep
-\ref{numeric.ops} & Generalized numeric operations & \tcode{} \\ \rowsep
+\ref{numeric.ops} & Generalized numeric operations & \tcode{} \\ \rowsep
\ref{specialized.algorithms} & Specialized \tcode{} algorithms & \tcode{} \\ \rowsep
\ref{alg.rand} & Specialized \tcode{} algorithms & \tcode{} \\ \rowsep
-\ref{alg.c.library} & C library algorithms & \tcode{} \\
+\ref{alg.c.library} & C library algorithms & \tcode{} \\
\end{libsumtab}
\rSec1[algorithms.requirements]{Algorithms requirements}
@@ -620,6 +620,173 @@
Parallel algorithms shall not participate in overload resolution unless
\tcode{is_execution_policy_v>} is \tcode{true}.
+\rSec2[execpol]{Execution policies}
+
+\rSec3[execpol.general]{General}
+
+\pnum
+Subclause~\ref{execpol} describes classes that are \defn{execution policy} types. An
+object of an execution policy type indicates the kinds of parallelism allowed
+in the execution of an algorithm and expresses the consequent requirements on
+the element access functions.
+Execution policy types are declared in header \libheaderref{execution}.
+\begin{example}
+\begin{codeblock}
+using namespace std;
+vector v = @\commentellip@;
+
+// standard sequential sort
+sort(v.begin(), v.end());
+
+// explicitly sequential sort
+sort(execution::seq, v.begin(), v.end());
+
+// permitting parallel execution
+sort(execution::par, v.begin(), v.end());
+
+// permitting vectorization as well
+sort(execution::par_unseq, v.begin(), v.end());
+\end{codeblock}
+\end{example}
+\begin{note}
+Implementations can provide additional execution policies
+to those described in this document as extensions
+to address parallel architectures that require idiosyncratic
+parameters for efficient execution.
+\end{note}
+
+\rSec3[execpol.type]{Execution policy type trait}
+
+\indexlibraryglobal{is_execution_policy}%
+\begin{itemdecl}
+template struct is_execution_policy { @\seebelow@ };
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+\tcode{is_execution_policy} can be used to detect execution policies for the
+purpose of excluding function signatures from otherwise ambiguous overload
+resolution participation.
+
+\pnum
+\tcode{is_execution_policy} is a \oldconcept{UnaryTypeTrait} with a
+base characteristic of \tcode{true_type} if \tcode{T} is the type of a standard
+or \impldef{additional execution policies supported by parallel algorithms}
+execution policy, otherwise \tcode{false_type}.
+
+\begin{note}
+This provision reserves the privilege of creating non-standard execution
+policies to the library implementation.
+\end{note}
+
+\pnum
+The behavior of a program that adds specializations for
+\tcode{is_execution_policy} is undefined.
+\end{itemdescr}
+
+\rSec3[execpol.seq]{Sequenced execution policy}
+
+\indexlibraryglobal{execution::sequenced_policy}%
+\begin{itemdecl}
+class execution::sequenced_policy { @\unspec@ };
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+The class \tcode{execution::sequenced_policy} is an execution policy type used
+as a unique type to disambiguate parallel algorithm overloading and require
+that a parallel algorithm's execution may not be parallelized.
+
+\pnum
+During the execution of a parallel algorithm with
+the \tcode{execution::sequenced_policy} policy,
+if the invocation of an element access function exits via an exception,
+\tcode{terminate} is invoked\iref{except.terminate}.
+\end{itemdescr}
+
+\rSec3[execpol.par]{Parallel execution policy}
+
+\indexlibraryglobal{execution::parallel_policy}%
+\begin{itemdecl}
+class execution::parallel_policy { @\unspec@ };
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+The class \tcode{execution::parallel_policy} is an execution policy type used as
+a unique type to disambiguate parallel algorithm overloading and indicate that
+a parallel algorithm's execution may be parallelized.
+
+\pnum
+During the execution of a parallel algorithm with
+the \tcode{execution::parallel_policy} policy,
+if the invocation of an element access function exits via an exception,
+\tcode{terminate} is invoked\iref{except.terminate}.
+\end{itemdescr}
+
+\rSec3[execpol.parunseq]{Parallel and unsequenced execution policy}
+
+\indexlibraryglobal{execution::parallel_unsequenced_policy}%
+\begin{itemdecl}
+class execution::parallel_unsequenced_policy { @\unspec@ };
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+The class \tcode{execution::parallel_unsequenced_policy} is an execution policy type
+used as a unique type to disambiguate parallel algorithm overloading and
+indicate that a parallel algorithm's execution may be parallelized and
+vectorized.
+
+\pnum
+During the execution of a parallel algorithm with
+the \tcode{execution::parallel_unsequenced_policy} policy,
+if the invocation of an element access function exits via an exception,
+\tcode{terminate} is invoked\iref{except.terminate}.
+\end{itemdescr}
+
+\rSec3[execpol.unseq]{Unsequenced execution policy}
+
+\indexlibraryglobal{execution::unsequenced_policy}%
+\begin{itemdecl}
+class execution::unsequenced_policy { @\unspec@ };
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+The class \tcode{unsequenced_policy} is an execution policy type
+used as a unique type to disambiguate parallel algorithm overloading and
+indicate that a parallel algorithm's execution may be vectorized,
+e.g., executed on a single thread using instructions
+that operate on multiple data items.
+
+\pnum
+During the execution of a parallel algorithm with
+the \tcode{execution::unsequenced_policy} policy,
+if the invocation of an element access function exits via an exception,
+\tcode{terminate} is invoked\iref{except.terminate}.
+\end{itemdescr}
+
+\rSec3[execpol.objects]{Execution policy objects}
+
+\indexlibraryglobal{seq}%
+\indexlibraryglobal{par}%
+\indexlibraryglobal{par_unseq}%
+\indexlibrarymember{execution}{seq}%
+\indexlibrarymember{execution}{par}%
+\indexlibrarymember{execution}{par_unseq}%
+\begin{itemdecl}
+inline constexpr execution::sequenced_policy execution::seq{ @\unspec@ };
+inline constexpr execution::parallel_policy execution::par{ @\unspec@ };
+inline constexpr execution::parallel_unsequenced_policy execution::par_unseq{ @\unspec@ };
+inline constexpr execution::unsequenced_policy execution::unseq{ @\unspec@ };
+\end{itemdecl}
+
+\begin{itemdescr}
+\pnum
+The header \libheaderref{execution} declares global objects associated with each type of execution policy.
+\end{itemdescr}
+
\rSec1[algorithm.syn]{Header \tcode{} synopsis}
\indexheader{algorithm}%
diff --git a/source/basic.tex b/source/basic.tex
index 035a4c2eaa..9524265f81 100644
--- a/source/basic.tex
+++ b/source/basic.tex
@@ -889,8 +889,7 @@
inhabits the same scope as the \grammarterm{template-declaration}.
\item
Friend declarations and
-declarations of qualified names and
-template specializations do not bind names\iref{dcl.meaning};
+declarations of template specializations do not bind names\iref{dcl.meaning};
those with qualified names target a specified scope, and
other friend declarations and
certain \grammarterm{elaborated-type-specifier}s\iref{dcl.type.elab}
diff --git a/source/config.tex b/source/config.tex
index 48233ea56a..8253638e61 100644
--- a/source/config.tex
+++ b/source/config.tex
@@ -1,8 +1,8 @@
%!TEX root = std.tex
%%--------------------------------------------------
%% Version numbers
-\newcommand{\docno}{N4988}
-\newcommand{\prevdocno}{N4986}
+\newcommand{\docno}{N4993}
+\newcommand{\prevdocno}{N4988}
\newcommand{\cppver}{202302L}
%% Release date
diff --git a/source/containers.tex b/source/containers.tex
index 1dd9f1f918..f43cc92f3b 100644
--- a/source/containers.tex
+++ b/source/containers.tex
@@ -122,6 +122,10 @@
\indexlibrarymemberx{unordered_set}{#1}%
\indexlibrarymemberx{unordered_multiset}{#1}%
\indexlibrarymemberx{unordered_multimap}{#1}%
+\indexlibrarymemberx{flat_map}{#1}%
+\indexlibrarymemberx{flat_set}{#1}%
+\indexlibrarymemberx{flat_multiset}{#1}%
+\indexlibrarymemberx{flat_multimap}{#1}%
}
\pnum
@@ -733,6 +737,10 @@
\indexlibrarymemberx{unordered_set}{#1}%
\indexlibrarymemberx{unordered_multiset}{#1}%
\indexlibrarymemberx{unordered_multimap}{#1}%
+\indexlibrarymemberx{flat_map}{#1}%
+\indexlibrarymemberx{flat_set}{#1}%
+\indexlibrarymemberx{flat_multiset}{#1}%
+\indexlibrarymemberx{flat_multimap}{#1}%
}
\pnum
@@ -2726,12 +2734,12 @@
\pnum
A type \tcode{X} meets the \defnadj{associative}{container} requirements
if \tcode{X} meets all the requirements of an allocator-aware
-container\iref{container.reqmts} and
+container\iref{container.alloc.reqmts} and
the following types, statements, and expressions are well-formed and
have the specified semantics,
except that for
\tcode{map} and \tcode{multimap}, the requirements placed on \tcode{value_type}
-in \ref{container.alloc.reqmts} apply instead to \tcode{key_type}
+in \ref{container.reqmts} apply instead to \tcode{key_type}
and \tcode{mapped_type}.
\begin{note}
For example, in some cases \tcode{key_type} and \tcode{mapped_type}
@@ -2747,6 +2755,10 @@
\indexlibrary{\idxcode{map}!\idxcode{#1}}%
\indexlibrary{\idxcode{multiset}!\idxcode{#1}}%
\indexlibrary{\idxcode{multimap}!\idxcode{#1}}%
+\indexlibrary{\idxcode{flat_set}!\idxcode{#1}}%
+\indexlibrary{\idxcode{flat_map}!\idxcode{#1}}%
+\indexlibrary{\idxcode{flat_multiset}!\idxcode{#1}}%
+\indexlibrary{\idxcode{flat_multimap}!\idxcode{#1}}%
}
\indexordmem{key_type}%
@@ -4225,11 +4237,11 @@
A type \tcode{X} meets
the \defnadj{unordered associative}{container} requirements
if \tcode{X} meets all the requirements of
-an allocator-aware container\iref{container.reqmts} and
+an allocator-aware container\iref{container.alloc.reqmts} and
the following types, statements, and expressions are well-formed and
have the specified semantics,
except that for \tcode{unordered_map} and \tcode{unordered_multimap},
-the requirements placed on \tcode{value_type} in \ref{container.alloc.reqmts}
+the requirements placed on \tcode{value_type} in \ref{container.reqmts}
apply instead to \tcode{key_type} and \tcode{mapped_type}.
\begin{note}
For example, \tcode{key_type} and \tcode{mapped_type}
@@ -6034,188 +6046,6 @@
}
\end{codeblock}
-\rSec2[deque.syn]{Header \tcode{} synopsis}
-
-\indexheader{deque}%
-\begin{codeblock}
-#include // see \ref{compare.syn}
-#include // see \ref{initializer.list.syn}
-
-namespace std {
- // \ref{deque}, class template \tcode{deque}
- template> class deque;
-
- template
- bool operator==(const deque& x, const deque& y);
- template
- @\placeholder{synth-three-way-result}@ operator<=>(const deque& x,
- @\itcorr@ const deque& y);
-
- template
- void swap(deque& x, deque& y)
- noexcept(noexcept(x.swap(y)));
-
- // \ref{deque.erasure}, erasure
- template
- typename deque::size_type
- erase(deque& c, const U& value);
- template
- typename deque::size_type
- erase_if(deque& c, Predicate pred);
-
- namespace pmr {
- template
- using deque = std::deque>;
- }
-}
-\end{codeblock}
-
-\rSec2[forward.list.syn]{Header \tcode{} synopsis}
-
-\indexheader{forward_list}%
-\begin{codeblock}
-#include // see \ref{compare.syn}
-#include // see \ref{initializer.list.syn}
-
-namespace std {
- // \ref{forward.list}, class template \tcode{forward_list}
- template> class forward_list;
-
- template
- bool operator==(const forward_list& x, const forward_list& y);
- template
- @\placeholder{synth-three-way-result}@ operator<=>(const forward_list& x,
- @\itcorr@ const forward_list& y);
-
- template
- void swap(forward_list& x, forward_list& y)
- noexcept(noexcept(x.swap(y)));
-
- // \ref{forward.list.erasure}, erasure
- template
- typename forward_list::size_type
- erase(forward_list& c, const U& value);
- template
- typename forward_list::size_type
- erase_if(forward_list& c, Predicate pred);
-
- namespace pmr {
- template
- using forward_list = std::forward_list>;
- }
-}
-\end{codeblock}
-
-\rSec2[list.syn]{Header \tcode{} synopsis}
-
-\indexheader{list}%
-\begin{codeblock}
-#include // see \ref{compare.syn}
-#include // see \ref{initializer.list.syn}
-
-namespace std {
- // \ref{list}, class template \tcode{list}
- template> class list;
-
- template
- bool operator==(const list& x, const list& y);
- template
- @\placeholder{synth-three-way-result}@ operator<=>(const list& x,
- @\itcorr@ const list& y);
-
- template
- void swap(list& x, list& y)
- noexcept(noexcept(x.swap(y)));
-
- // \ref{list.erasure}, erasure
- template
- typename list::size_type
- erase(list& c, const U& value);
- template
- typename list::size_type
- erase_if(list& c, Predicate pred);
-
- namespace pmr {
- template
- using list = std::list>;
- }
-}
-\end{codeblock}
-
-\rSec2[vector.syn]{Header \tcode{} synopsis}
-
-\indexheader{vector}%
-\begin{codeblock}
-#include // see \ref{compare.syn}
-#include // see \ref{initializer.list.syn}
-
-namespace std {
- // \ref{vector}, class template \tcode{vector}
- template> class vector;
-
- template
- constexpr bool operator==(const vector& x, const vector& y);
- template
- constexpr @\placeholder{synth-three-way-result}@ operator<=>(const vector& x,
- @\itcorr@ const vector& y);
-
- template
- constexpr void swap(vector& x, vector& y)
- noexcept(noexcept(x.swap(y)));
-
- // \ref{vector.erasure}, erasure
- template
- constexpr typename vector::size_type
- erase(vector& c, const U& value);
- template
- constexpr typename vector::size_type
- erase_if(vector& c, Predicate pred);
-
- namespace pmr {
- template
- using vector = std::vector>;
- }
-
- // \ref{vector.bool}, specialization of \tcode{vector} for \tcode{bool}
- // \ref{vector.bool.pspc}, partial class template specialization \tcode{vector}
- template
- class vector;
-
- template
- constexpr bool @\exposid{is-vector-bool-reference}@ = @\seebelow@; // \expos
-
- // hash support
- template struct hash;
- template struct hash>;
-
- // \ref{vector.bool.fmt}, formatter specialization for \tcode{vector}
- template requires @\exposid{is-vector-bool-reference}@
- struct formatter;
-}
-\end{codeblock}
-
-\rSec2[inplace.vector.syn]{Header \tcode{} synopsis}
-
-\indexheader{inplace_vector}%
-\begin{codeblock}
-// mostly freestanding
-#include // see \ref{compare.syn}
-#include // see \ref{initializer.list.syn}
-
-namespace std {
- // \ref{inplace.vector}, class template \tcode{inplace_vector}
- template class inplace_vector; // partially freestanding
-
- // \ref{inplace.vector.erasure}, erasure
- template
- constexpr typename inplace_vector::size_type
- erase(inplace_vector& c, const U& value);
- template
- constexpr typename inplace_vector::size_type
- erase_if(inplace_vector& c, Predicate pred);
-}
-\end{codeblock}
-
\rSec2[array]{Class template \tcode{array}}
\indexlibraryglobal{array}%
@@ -6460,7 +6290,7 @@
\pnum
\mandates
\tcode{is_array_v} is \tcode{false} and
-\tcode{is_constructible_v} is \tcode{true}.
+\tcode{is_constructible_v, T\&>} is \tcode{true}.
\pnum
\expects
@@ -6481,7 +6311,7 @@
\pnum
\mandates
\tcode{is_array_v} is \tcode{false} and
-\tcode{is_move_constructible_v} is \tcode{true}.
+\tcode{is_constructible_v, T>} is \tcode{true}.
\pnum
\expects
@@ -6539,6 +6369,42 @@
where indexing is zero-based.
\end{itemdescr}
+\rSec2[deque.syn]{Header \tcode{} synopsis}
+
+\indexheader{deque}%
+\begin{codeblock}
+#include // see \ref{compare.syn}
+#include // see \ref{initializer.list.syn}
+
+namespace std {
+ // \ref{deque}, class template \tcode{deque}
+ template> class deque;
+
+ template
+ bool operator==(const deque& x, const deque& y);
+ template
+ @\placeholder{synth-three-way-result}@ operator<=>(const deque& x,
+ @\itcorr@ const deque& y);
+
+ template
+ void swap(deque& x, deque& y)
+ noexcept(noexcept(x.swap(y)));
+
+ // \ref{deque.erasure}, erasure
+ template
+ typename deque::size_type
+ erase(deque& c, const U& value);
+ template
+ typename deque::size_type
+ erase_if(deque& c, Predicate pred);
+
+ namespace pmr {
+ template
+ using deque = std::deque>;
+ }
+}
+\end{codeblock}
+
\rSec2[deque]{Class template \tcode{deque}}
\rSec3[deque.overview]{Overview}
@@ -6911,7 +6777,7 @@
If an exception is thrown other than by the
copy constructor, move constructor,
assignment operator, or move assignment operator of
-\tcode{T}
+\tcode{T},
there are no effects.
If an exception is thrown while inserting a single element at either end,
there are no effects.
@@ -6993,31 +6859,67 @@
\end{codeblock}
\end{itemdescr}
-\rSec2[forward.list]{Class template \tcode{forward_list}}
+\rSec2[forward.list.syn]{Header \tcode{} synopsis}
-\rSec3[forward.list.overview]{Overview}
+\indexheader{forward_list}%
+\begin{codeblock}
+#include // see \ref{compare.syn}
+#include // see \ref{initializer.list.syn}
-\pnum
-A \tcode{forward_list} is a container that supports forward iterators and allows
-constant time insert and erase operations anywhere within the sequence, with storage
-management handled automatically. Fast random access to list elements is not supported.
-\begin{note}
-It is intended that \tcode{forward_list} have zero space or time overhead
-relative to a hand-written C-style singly linked list. Features that would conflict with
-that goal have been omitted.
-\end{note}
+namespace std {
+ // \ref{forward.list}, class template \tcode{forward_list}
+ template> class forward_list;
-\pnum
-A \tcode{forward_list} meets all of the requirements
-of a container\iref{container.reqmts},
-except that the \tcode{size()} member function is not provided and
-\tcode{operator==} has linear complexity,
-A \tcode{forward_list} also meets all of the requirements
-for an allocator-aware container\iref{container.alloc.reqmts}.
-In addition, a \tcode{forward_list}
-provides the \tcode{assign} member functions and
-several of the optional sequence container requirements\iref{sequence.reqmts}.
-Descriptions are provided here only for operations on
+ template
+ bool operator==(const forward_list& x, const forward_list& y);
+ template
+ @\placeholder{synth-three-way-result}@ operator<=>(const forward_list& x,
+ @\itcorr@ const forward_list& y);
+
+ template
+ void swap(forward_list& x, forward_list& y)
+ noexcept(noexcept(x.swap(y)));
+
+ // \ref{forward.list.erasure}, erasure
+ template
+ typename forward_list::size_type
+ erase(forward_list& c, const U& value);
+ template
+ typename forward_list::size_type
+ erase_if(forward_list& c, Predicate pred);
+
+ namespace pmr {
+ template
+ using forward_list = std::forward_list>;
+ }
+}
+\end{codeblock}
+
+\rSec2[forward.list]{Class template \tcode{forward_list}}
+
+\rSec3[forward.list.overview]{Overview}
+
+\pnum
+A \tcode{forward_list} is a container that supports forward iterators and allows
+constant time insert and erase operations anywhere within the sequence, with storage
+management handled automatically. Fast random access to list elements is not supported.
+\begin{note}
+It is intended that \tcode{forward_list} have zero space or time overhead
+relative to a hand-written C-style singly linked list. Features that would conflict with
+that goal have been omitted.
+\end{note}
+
+\pnum
+A \tcode{forward_list} meets all of the requirements
+of a container\iref{container.reqmts},
+except that the \tcode{size()} member function is not provided and
+\tcode{operator==} has linear complexity.
+A \tcode{forward_list} also meets all of the requirements
+for an allocator-aware container\iref{container.alloc.reqmts}.
+In addition, a \tcode{forward_list}
+provides the \tcode{assign} member functions and
+several of the optional sequence container requirements\iref{sequence.reqmts}.
+Descriptions are provided here only for operations on
\tcode{forward_list} that are not described in that table or for operations where there
is additional semantic information.
@@ -7894,6 +7796,42 @@
Equivalent to: \tcode{return c.remove_if(pred);}
\end{itemdescr}
+\rSec2[list.syn]{Header \tcode{} synopsis}
+
+\indexheader{list}%
+\begin{codeblock}
+#include // see \ref{compare.syn}
+#include // see \ref{initializer.list.syn}
+
+namespace std {
+ // \ref{list}, class template \tcode{list}
+ template> class list;
+
+ template
+ bool operator==(const list& x, const list& y);
+ template
+ @\placeholder{synth-three-way-result}@ operator<=>(const list