diff --git a/papers/n4812.html b/papers/n4812.html
new file mode 100644
index 0000000000..78aa63fbd7
--- /dev/null
+++ b/papers/n4812.html
@@ -0,0 +1,813 @@
+
N4811 is a prior version of this Editors' Report, and is hereby rescinded and
+replaced by this version. Thanks to Akira Takahashi for identifying errors in
+some hyperlink destinations in that document; the hyperlinks in this version of
+the Editors' Report have been corrected.
+
+Library motions added a total of 7 pages to Clause 16-32.
+
+The edits for CWG2310 inadvertently required the base class to be complete
+instead of the derived class in one of the edits. After consultation with CWG,
+the derived class is now required to be complete in all cases.
+
+The edits for CWG2331 were intended to be an editorial cleanup and wording
+simplification, but were found to have unintentional normative effect. This
+issue is being returned to CWG for redrafting.
+
+The edits for CWG2332 added a note that was not entirely accurate. The note,
+along with the normative text that it references, have been rephrased to
+clarify that an injected-class-name is never interpreted as a template-name
+in a context in which class template argument deduction would apply (even
+though it can be interpreted as a template-name in some cases in a context
+where a decl-specifier might be parsed, such as in a template-argument).
+
+The wording moved for CWG2020 inadvertently omitted some edits that were part
+of the wording reviewed by CWG. Those edits were not substantive, and have been
+restored editorially.
+
+Likewise the corresponding redundant wording was removed from the rules for
+defaulted operators <
, >
, <=
, and >=
that inaccurately claimed they
+could select a reversed operator<=>
.
+
+Modernized the wording to follow current editorial conventions, and simplified
+where possible.
+
+Fixed a contradiction between the core and library wording; the library wording
+allowed a coroutine_handle<>
to resume any coroutine, but the core wording
+did not account for that possibility and only permitted resumption via a
+coroutine_handle<P>
with the right promise type P
.
+
+Several section labels introduced by the motions papers have been modified
+to match our style guide. In addition to the section labels affected by the
+above motions, all section labels containing underscores have been renamed
+to instead use periods.
+
+In N4791 (the post-San-Diego working draft), an editorial change was applied
+to repair missing wording in 2018-11 CWG motion 14
+(P0595R2 "std::is_constant_evaluated()
").
+This change added a definition of the term "usable in constant expressions"
+as applied to objects and references that was inadvertently dropped from the
+wording during CWG review.
+
+Further review within CWG has shown that the dropped wording is also incorrect,
+so the editorial fix has been reverted (leaving the definition absent rather
+than incorrect), and a proper definition will be inserted by a core issue.
+
+A log of editorial fixes made to the working draft since N4800 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.
+
+`
+
+## Acknowledgements
+
+Special thanks to Marshall Clow
+for supplying the LaTeX sources for
+
+ * [P1458R1](http://wg21.link/p1458r1) (LWG motion 7, 42 pages of wording changes)
+ * [P1459R1](http://wg21.link/p1459r1) (LWG motion 8, 15 pages of wording changes)
+ * [P1463R1](http://wg21.link/p1463r1) (LWG motion 10, 119 pages of wording changes) and
+ * [P1464R1](http://wg21.link/p1464r1) (LWG motion 11, 60 pages of wording changes)
+
+and to Gor Nishanov
+for supplying a pull request for
+[P0912R5](http://wg21.link/p0912r5) (CWG motion 15, 22 pages of wording changes).
+
+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
+
+ * [N4810](http://wg21.link/n4810) is the current working draft for C++20. It replaces [N4800](http://wg21.link/n4800).
+ * N4812 is this Editors' Report.
+
+N4811 is a prior version of this Editors' Report, and is hereby rescinded and
+replaced by this version. Thanks to Akira Takahashi for identifying errors in
+some hyperlink destinations in that document; the hyperlinks in this version of
+the Editors' Report have been corrected.
+
+## Motions incorporated into working draft
+
+### Core working group motions
+
+CWG motion 1: [Core issue resolutions](http://wg21.link/p1358r0) for 14 issues in "ready" status applied, 1 not applied:
+
+ * [2256](http://wg21.link/cwg2256) Lifetime of trivially-destructible objects
+ * [2267](http://wg21.link/cwg2267) Copy-initialization of temporary in reference direct-initialization
+ * [2278](http://wg21.link/cwg2278) Copy elision in constant expressions reconsidered
+ * [2303](http://wg21.link/cwg2303) Partial ordering and recursive variadic inheritance
+ * [2309](http://wg21.link/cwg2309) Restrictions on nested statements within constexpr functions
+ * [2310](http://wg21.link/cwg2310) Type completeness and derived-to-base pointer conversions **see below**
+ * [2317](http://wg21.link/cwg2317) Self-referential default member initializers
+ * [2318](http://wg21.link/cwg2318) Nondeduced contexts in deduction from a *braced-init-list*
+ * [2330](http://wg21.link/cwg2330) Missing references to variable templates
+ * [2331](http://wg21.link/cwg2331) Redundancy in description of class scope **not applied, see below**
+ * [2332](http://wg21.link/cwg2332) *template-name* as *simple-type-name* vs *injected-class-name* **see below**
+ * [2336](http://wg21.link/cwg2336) Destructor characteristics vs potentially-constructed subobjects
+ * [2352](http://wg21.link/cwg2352) Similar types and reference binding
+ * [2358](http://wg21.link/cwg2358) Explicit capture of value
+ * [2360](http://wg21.link/cwg2360) `[[maybe_unused]]` and structured bindings
+
+CWG motion 2: [Core issue resolutions](http://wg21.link/p1359r0) for 22 issues in "tentatively ready" status applied, resolving 24 issues:
+
+ * [581](http://wg21.link/cwg581) Can a templated constructor be explicitly instantiated or specialized?
+ * [1937](http://wg21.link/cwg1937) Incomplete specification of function pointer from lambda
+ * [1938](http://wg21.link/cwg1938) Should hosted/freestanding be implementation-defined?
+ * [2020](http://wg21.link/cwg2020) Inadequate description of odr-use of implicitly-invoked functions **see below**
+ * [2051](http://wg21.link/cwg2051) Simplifying alias rules
+ * [2083](http://wg21.link/cwg2083) Incorrect cases of odr-use
+ * [2103](http://wg21.link/cwg2103) Lvalue-to-rvalue conversion is irrelevant in odr-use of a reference **resolved by 2083**
+ * [2170](http://wg21.link/cwg2170) Unclear definition of odr-use for arrays **resolved by 2083**
+ * [2257](http://wg21.link/cwg2257) Lifetime extension of references vs exceptions
+ * [2266](http://wg21.link/cwg2266) Has dependent type vs is type-dependent
+ * [2289](http://wg21.link/cwg2289) Uniqueness of structured binding names
+ * [2353](http://wg21.link/cwg2353) Potential results of a member access expression for a static data member
+ * [2354](http://wg21.link/cwg2354) Extended alignment and object representation
+ * [2365](http://wg21.link/cwg2365) Confusing specification for `dynamic_cast`
+ * [2368](http://wg21.link/cwg2368) Differences in relational and three-way constant comparisons
+ * [2372](http://wg21.link/cwg2372) Incorrect matching rules for block-scope extern declarations
+ * [2379](http://wg21.link/cwg2379) Missing prohibition against `constexpr` in friend declaration
+ * [2380](http://wg21.link/cwg2380) *capture-default* makes too many references odr-usable
+ * [2381](http://wg21.link/cwg2381) Composite pointer type of pointers to plain and `noexcept` member functions
+ * [2384](http://wg21.link/cwg2384) Conversion function templates and qualification conversions
+ * [2385](http://wg21.link/cwg2385) Lookup for *conversion-function-id*s
+ * [2386](http://wg21.link/cwg2386) `tuple_size` requirements for structured binding
+ * [2387](http://wg21.link/cwg2387) Linkage of const-qualified variable template
+ * [2394](http://wg21.link/cwg2394) Const-default-constructible for members
+
+CWG motion 3: [P1286R2 "Contra CWG DR1778"](http://wg21.link/p1286r2) **(DR)**
+
+ * Alters resolution of [1778](http://wg21.link/cwg1778) *exception-specification* in explicitly-defaulted functions
+
+CWG motion 4: [P1091R3 "Extending structured bindings to be more like variable declarations"](http://wg21.link/p1091r3)
+
+CWG motion 5: [P1381R1 "Reference capture of structured bindings"](http://wg21.link/p1381r1)
+
+CWG motion 6: [P1041R4 "Make `char16_t`/`char32_t` string literals be UTF-16/32"](http://wg21.link/p1041r4)
+
+CWG motion 7: [P1139R2 "Address wording issues related to ISO 10646"](http://wg21.link/p1139r2)
+
+CWG motion 8: [P1323R2 "Contract postconditions and return type deduction"](http://wg21.link/p1323r2)
+
+CWG motion 9: [P0960R3 "Allow initializing aggregates from a parenthesized list of values"](http://wg21.link/p0960r3)
+
+CWG motion 10: [P1009R2 "Array size deduction in *new-expressions*"](http://wg21.link/p1009r2) **(DR)**
+
+CWG motion 11: [P1103R3 "Modules"](http://wg21.link/p1103r3)
+
+CWG motion 12: [P1185R2 "`<=>` `!=` `==`"](http://wg21.link/p1185r2)
+
+CWG motions 13 and 14 apply to the Reflection TS
+
+CWG motion 15: [P0912R5 "Coroutines"](http://wg21.link/p0912r5)
+
+Core motions added a total of 24 pages (and 1 Clause) to Clause 1-15
+
+### Library working group motions
+
+LWG motion 1 applies to the Library Fundamentals TS
+
+LWG motion 2: [Library issue resolutions](http://wg21.link/p1457r0) for 2 issues in Ready status and 11 issues in Tentatively Ready status applied:
+
+ * [3012](http://wg21.link/lwg3012) `atomic` is unimplementable for non-`is_trivially_copy_constructible` `T`
+ * [3040](http://wg21.link/lwg3040) `basic_string_view::starts_with` *Effects* are incorrect
+ * [3077](http://wg21.link/lwg3077) (`push`|`emplace`)`_back` should invalidate the end iterator
+ * [3087](http://wg21.link/lwg3087) One final `&x` in [list.ops]
+ * [3101](http://wg21.link/lwg3101) `span`'s `Container` constructors need another constraint
+ * [3112](http://wg21.link/lwg3112) `system_error` and `filesystem_error` constructors taking a `string` may not be able to meet their postconditions
+ * [3119](http://wg21.link/lwg3119) Program-definedness of closure types
+ * [3133](http://wg21.link/lwg3133) Modernizing numeric type requirements
+ * [3144](http://wg21.link/lwg3144) `span` does not have a `const_pointer` typedef
+ * [3173](http://wg21.link/lwg3173) Enable CTAD for *`ref-view`*
+ * [3179](http://wg21.link/lwg3179) `subrange` should always model `Range`
+ * [3180](http://wg21.link/lwg3180) Inconsistently named return type for `ranges::minmax_element`
+ * [3182](http://wg21.link/lwg3182) Specification of `Same` could be clearer
+
+LWG motion 3: [P0339R6 "`polymorphic_allocator<>` as a vocabulary type"](http://wg21.link/p0339r6)
+
+LWG motion 4: [P0340R3 "Making `std::underlying_type` SFINAE-friendly"](http://wg21.link/p0340r3)
+
+LWG motion 5 was retracted
+
+LWG motion 6: [P0738R2 "I Stream, You Stream, We All Stream for `istream_iterator`"](http://wg21.link/p0738r2)
+
+LWG motion 7: [P1458R1 "Mandating the standard library: clause 16 - language support library"](http://wg21.link/p1458r1)
+
+LWG motion 8: [P1459R1 "Mandating the standard library: clause 18 - diagnostics library"](http://wg21.link/p1459r1)
+
+LWG motion 9: [P1462R1 "Mandating the standard library: clause 20 - strings library"](http://wg21.link/p1462r1)
+
+LWG motion 10: [P1463R1 "Mandating the standard library: clause 21 - containers library"](http://wg21.link/p1463r1)
+
+LWG motion 11: [P1464R1 "Mandating the standard library: clause 22 - iterators library"](http://wg21.link/p1464r1)
+
+LWG motion 12: [P1164R1 "Make `create_directory()` intuitive"](http://wg21.link/p1164r1) **(DR)**
+
+LWG motion 13: [P0811R3 "Well-behaved interpolation for numbers and pointers"](http://wg21.link/p0811r3)
+
+LWG motion 14: [P1001R2 "Target vectorization policies from Parallelism V2 TS"](http://wg21.link/p1001r2)
+
+LWG motion 15: [P1227R2 "Signed `ssize()` functions, unsigned `size()` functions "](http://wg21.link/p1227r2)
+
+LWG motion 16: [P1252R2 "Ranges design cleanup"](http://wg21.link/p1252r2)
+
+LWG motion 17: [P1024R3 "Usability enhancements for `std::span`"](http://wg21.link/p1024r3)
+
+LWG motion 18: [P0920R2 "Precalculated hash values in lookup"](http://wg21.link/p0920r2)
+
+LWG motion 19: [P1357R1 "Traits for [un]bounded arrays"](http://wg21.link/p1357r1)
+
+Library motions added a total of 7 pages to Clause 16-32.
+
+## Notable editorial changes
+
+### CWG motion 1
+
+The edits for CWG2310 inadvertently required the base class to be complete
+instead of the derived class in one of the edits. After consultation with CWG,
+the derived class is now required to be complete in all cases.
+
+The edits for CWG2331 were intended to be an editorial cleanup and wording
+simplification, but were found to have unintentional normative effect. This
+issue is being returned to CWG for redrafting.
+
+The edits for CWG2332 added a note that was not entirely accurate. The note,
+along with the normative text that it references, have been rephrased to
+clarify that an injected-class-name is never interpreted as a *template-name*
+in a context in which class template argument deduction would apply (even
+though it can be interpreted as a *template-name* in some cases in a context
+where a *decl-specifier* might be parsed, such as in a *template-argument*).
+
+### CWG motion 2
+
+The wording moved for CWG2020 inadvertently omitted some edits that were part
+of the wording reviewed by CWG. Those edits were not substantive, and have been
+restored editorially.
+
+### CWG motion 12
+
+Removed redundant restatement of the `operator==` symmetry rule in defaulted
+`operator!=`; looking for reversed candidates and rewriting `==` expressions is
+already handled by overload resolution, and a reversed `operator==` can never
+be selected anyway because the two arguments are of the same type.
+
+Likewise the corresponding redundant wording was removed from the rules for
+defaulted operators `<`, `>`, `<=`, and `>=` that inaccurately claimed they
+could select a reversed `operator<=>`.
+
+### CWG motion 15
+
+Modernized the wording to follow current editorial conventions, and simplified
+where possible.
+
+Fixed a contradiction between the core and library wording; the library wording
+allowed a `coroutine_handle<>` to resume any coroutine, but the core wording
+did not account for that possibility and only permitted resumption via a
+`coroutine_handle` with the right promise type `P`.
+
+### LWG motion 2
+
+Replaced the references to *CopyConstructible* and *CopyAssignable* with the
+intended *Cpp17CopyConstructible* and *Cpp17CopyAssignable* after consultation
+with LWG.
+
+### Section label changes
+
+Several section labels introduced by the motions papers have been modified
+to match our style guide. In addition to the section labels affected by the
+above motions, all section labels containing underscores have been renamed
+to instead use periods.
+
+### Reversion of prior editorial change
+
+In N4791 (the post-San-Diego working draft), an editorial change was applied
+to repair missing wording in 2018-11 CWG motion 14
+([P0595R2 "`std::is_constant_evaluated()`"](http://wg21.link/p0595r2)).
+This change added a definition of the term "usable in constant expressions"
+as applied to objects and references that was inadvertently dropped from the
+wording during CWG review.
+
+Further review within CWG has shown that the dropped wording is also incorrect,
+so the editorial fix has been reverted (leaving the definition absent rather
+than incorrect), and a proper definition will be inserted by a core issue.
+
+## Minor editorial fixes
+
+A log of editorial fixes made to the working draft since N4800 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/n4800...n4810).
+
+ commit 142acf0bbde8d6fd20cb67c051d896fec33a84b6
+ Author: stryku
+ Date: Thu Oct 11 18:41:18 2018 +0200
+
+ [decl.init]/10 Fix specified initialization.
+
+ According to [basic.start.static]/2, for objects with static storage duration,
+ zero initialization performs only if constant initialization does not.
+ [decl.init]/10 can be generalized to static initialization.
+ This is an editorial note change.
+
+ commit 74def77454a15b6cdb45be0f31916396b4b63b72
+ Author: Richard Smith
+ Date: Fri Mar 15 13:45:06 2019 -0700
+
+ [util.smartptr.atomic.shared] [util.smartptr.atomic.weak] Clarify
+ grouping of "either".
+
+ commit 4c5701a79cc7c4cc7b9cd9c6070e3cd88961aca7
+ Author: Jens Maurer
+ Date: Fri Dec 21 21:04:43 2018 +0100
+
+ [mismatch] LWG3178 std::mismatch is missing an upper bound
+
+ commit 04a5e31a02e19e5d1c9e9a0b05c40ce8730c7064
+ Author: Jens Maurer
+ Date: Sat Jan 26 00:30:13 2019 +0100
+
+ [algorithms] Qualify declarator-id with sub-namespace.
+
+ Also qualify return types where appropriate.
+
+ commit 6c844190a533950fc0100eac4da7785d99c87400
+ Author: Jens Maurer
+ Date: Fri Mar 15 20:25:59 2019 +0100
+
+ [time.clock.req] Change 'satisfy' to 'meet'.
+
+ commit c3adaef44b94cc63a8a8806f398185046461947c
+ Author: Jens Maurer
+ Date: Fri Mar 15 19:23:30 2019 +0100
+
+ [numeric.requirements] Define 'numeric type'.
+
+ commit 1ce86a62a3cff9fb2bcf6c1a2c37168e023e338b
+ Author: Jens Maurer
+ Date: Sat Mar 9 22:18:26 2019 +0100
+
+ [time.clock.req] Simplify requirements for Cpp17TrivialClock.
+
+ commit 0ba5424c1beddfd8c8403ce882b96dee0f530c7f
+ Author: JF Bastien
+ Date: Fri Mar 15 13:52:39 2019 -0700
+
+ [basic.fundamental] Rename 'range exponent' to 'width' to align with C
+
+ commit 9e00558f2a824421406a6703d1232cc4fb89bb15
+ Author: Arthur O'Dwyer
+ Date: Fri Mar 15 16:43:16 2019 -0400
+
+ [std] Fix a bunch of faulty parallelism with "either".
+
+ commit 54ddcb970132bfe026c9d9d62d967632b56ae303
+ Author: BRevzin
+ Date: Fri Mar 15 15:30:07 2019 -0500
+
+ [class.rel] Simplifying wording to avoid talking about a reversed <=>.
+
+ We can never select a reversed <=> here because the operands are of the same type.
+
+ commit 5d174b05d8cd08717ed7efc05d0271409651071c
+ Author: Richard Smith
+ Date: Fri Mar 15 12:33:42 2019 -0700
+
+ [expr.prim.lambda.capture] Convert paragraphs repeating the
+ "non-odr-usable local entities shall not be odr-used" rule from
+ [basic.def.odr] into notes.
+
+ commit 41853024e5e6fcd5feb496f64767d2888d76154f
+ Author: Richard Smith
+ Date: Fri Mar 15 11:38:57 2019 -0700
+
+ Revert "[expr.const] Add missing definition of 'usable in constant expressions'"
+
+ The prior editorial fix was an attempt to re-add wording that was
+ missing from P0595R2 (moved as 2018-11 CWG Motion 14). However, CWG
+ analysis has indicated that the editorial fix is incomplete, so we're
+ reverting it to restore the wording to the as-moved state.
+
+ This reverts commit e58439bce8af85e6569328272c2cfb73f5fc44d6.
+
+ commit 154f2c59c4377897937f4b0722cfe2b6d726cc59
+ Author: birbacher
+ Date: Fri Mar 15 18:39:16 2019 +0000
+
+ [container.node] Add 3 "template" keywords for dependent name (#2676)
+
+ On:
+ [container.node.overview]/4
+ [container.node.cons]/3.1
+ [container.node.dtor]/1
+
+ commit 2585d7f5894b46e0aa2f961183060a5201b2cca7
+ Author: Jens Maurer
+ Date: Fri Dec 21 19:29:38 2018 +0100
+
+ [std] Replace underscores in stable labels with periods.
+
+ commit 554a8926404bd5e0f772a6cb72c04bd12a5b7984
+ Author: Casey Carter
+ Date: Mon Mar 4 09:29:50 2019 -0800
+
+ [specialized.algorithms] Rename voidify's parameter
+
+ `ptr` is an odd name for a parameter that is a reference to storage for an object.
+
+ commit a2dfa61a0d50a24e7be6cbc004bb0f076b8c62b5
+ Author: Jens Maurer
+ Date: Fri Mar 8 22:25:38 2019 +0100
+
+ [queue.syn,stack.syn] Add partial specialization of uses_allocator
+
+ commit 721f2d606f90cc20a16ad9b4383bc78cb368abdc
+ Author: Jonathan Wakely
+ Date: Fri Mar 15 02:53:18 2019 +0000
+
+ [func.not_fn], [func.bind_front] fix phrasing of \mandates and \expects (#2750)
+
+ The Mandates: element should just state its condition, and not say "shall".
+ Cpp17 concept requirements should be phrased as "X meets the
+ Y requirements" not "X shall meet the requirements of Y".
+
+ commit 48484c967ee5f3ecb65ff857f8f4794e108ba0cb
+ Author: Krystian
+ Date: Thu Mar 14 22:49:33 2019 -0400
+
+ [temp.class.spec.mfunc] Correct "class template specialization" to the intended "class template partial specialization"
+
+ commit 3117814eaf800a5e1dd387f4c5a0522f2627689e
+ Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+ Date: Fri Mar 15 05:48:28 2019 +0300
+
+ [expr.sizeof] Remove the redundant paragraph 3
+
+ Paragraph 1 already says that functions are disallowed and function pointers are allowed.
+
+ commit c769f835dadd4a35df9febad684a296d6cb71a53
+ Author: JF Bastien
+ Date: Thu Mar 14 19:45:53 2019 -0700
+
+ [dcl.attr.contract.cond] Replace return type with 'void' in example that does not return
+
+ Also remove the (unused) name for the return value in the postcondition.
+
+ commit d48c79e223cfbd5ec134703e20989235208e9364
+ Author: Jens Maurer
+ Date: Fri Mar 8 01:14:16 2019 +0100
+
+ [dcl.enum] Fix singular/plural mismatch.
+
+ commit c5fb73ba6a9b71f6e247103ab4baac1c9f72e210
+ Author: Jens Maurer
+ Date: Fri Mar 8 01:13:35 2019 +0100
+
+ [conv.prom] b_min and b_max are no longer defined in [dcl.enum]
+
+ commit d7d2580c7d8fabe25ada4dd0e091f9997c0916f5
+ Author: Jens Maurer
+ Date: Sat Mar 9 22:36:47 2019 +0100
+
+ [range.iota,range.adaptors] Add cross-references for private member types.
+
+ commit b8fd249c737ff2c3652cf6ef77db25712038d353
+ Author: Jens Maurer
+ Date: Sun Mar 10 20:20:10 2019 +0100
+
+ [dcl.init] Prepend 'Otherwise' to a bullet
+
+ commit dd227824ade24ab51dd4cc926c4b9e87cc29becf
+ Author: Jens Maurer
+ Date: Sun Mar 10 20:28:41 2019 +0100
+
+ [dcl.attr.contract.cond] References cannot be modified.
+
+ Avoid confusion caused by using the words "makes [...]
+ modifications of the value of [a] parameter" by excluding
+ references.
+
+ commit b0116b87bf33fed9648e6e8b1b0c7cee0d90b311
+ Author: Jason Merrill
+ Date: Tue Mar 12 09:06:23 2019 -0400
+
+ [over.match.best] Add number for paragraph 2.
+
+ commit f0f7ba234644d3690d18fcba73f618648014a47c
+ Author: Jens Maurer
+ Date: Wed Mar 13 22:21:42 2019 +0100
+
+ [lib] Use '(inclusive)', not other punctuation
+
+ to indicate inclusive ranges in prose.
+
+ commit 5ba461ec9836f95ed7a54b563b06d480f564e987
+ Author: Jens Maurer
+ Date: Wed Mar 13 22:46:19 2019 +0100
+
+ [class.eq,class.spaceship] Clarify order of comparison.
+
+ commit 42e5df5c08c9ef805da304fe05fe387cfc3d33d5
+ Author: Jens Maurer
+ Date: Thu Mar 14 00:02:25 2019 +0100
+
+ [basic.lookup.argdep] Reorder bullets to group semantics.
+
+ commit 927dc13e1010e031692f3a94d8e9599beeb877ac
+ Author: Richard Smith
+ Date: Thu Mar 14 17:22:07 2019 -0700
+
+ [array.tuple] Fix broken description of tuple_element for std::array.
+
+ commit 0b06fcd5f92bc0439a868471a5fdfdba8a181941
+ Author: Jens Maurer
+ Date: Fri Mar 8 22:12:14 2019 +0100
+
+ [ranges.syn] Add ref_view to header synopsis.
+
+ commit 6f6e5772b2a2dcf41e3db4f68b6cbc3c0628c061
+ Author: Richard Smith
+ Date: Thu Mar 14 16:05:33 2019 -0700
+
+ [algorithms.parallel.exec] Rephrase to avoid incorrect use of "may not".
+
+ Convert rationale sentence to a note.
+
+ commit de76c7de8c4f9734e0e4351d2088d4786ee62135
+ Author: Jens Maurer
+ Date: Tue Mar 5 21:57:10 2019 +0100
+
+ [char.traits.typedefs] Change 'shall meet' to 'meets'
+
+ commit e11e27a7873953f0c078901f7ddbb0d7d701c5f7
+ Author: Jens Maurer
+ Date: Wed Mar 6 21:15:37 2019 +0100
+
+ [mem.poly.allocator.mem] Avoid duplicate colons.
+
+ commit 2956ba37186d7e9cbe728cc3870a2a26fb1f0168
+ Author: Richard Smith
+ Date: Wed Mar 13 14:14:43 2019 -0700
+
+ [dcl.fct.def.coroutine] Update wording to align with current editorial
+ conventions.
+
+ Reorder and rearrange to reduce the number of variables with long scopes
+ that we define in the wording.
+
+ Fix mismatch between core and library wording where library permits
+ coroutine_handle to resume a coroutine with any promise type, and
+ the core language does not.
+
+ commit 8dd4539b24473677809163f5e6d399ba6aa0b27d
+ Author: Richard Smith
+ Date: Tue Mar 12 18:15:59 2019 -0700
+
+ [expr.await] Rephrase and modernize wording.
+
+ Invoke temporary materialization conversion directly rather than
+ handwaving about a temporary object. Specify that the o expression is
+ evaluated. Bulletize description of the three different ways that
+ await-suspend is called.
+
+ Fix wording that uses values and objects on the left-hand side of a
+ class member access to instead consistently use expressions.
+
+ Fixes #2774.
+
+ commit d69814f61077f7e549ccc39a21fc3b90db4223d6
+ Author: Richard Smith
+ Date: Mon Mar 11 20:12:17 2019 -0700
+
+ [temp.param] "a type that is literal" -> "a literal type".
+
+ commit c0058816fdfe079095ca8717ad692dc2d498d6a3
+ Author: Richard Smith
+ Date: Mon Mar 11 20:11:46 2019 -0700
+
+ [class.eq] Remove redundant repetition of the operator== symmetry rule.
+
+ commit 007c0c1a619417f94c2c4efb57be71c09f2c2870
+ Author: Jens Maurer
+ Date: Wed Mar 6 21:32:09 2019 +0100
+
+ [temp.type] Do not refer to operator==, which excludes built-in ==.
+
+ commit caa5c8aedecdf68cfda4f5d95ec9d20451953117
+ Author: Jens Maurer
+ Date: Tue Mar 5 19:05:25 2019 +0100
+
+ [class.compare.default] Add a note that friends are found by ADL only.
+
+ commit c9074b533c835bbf820f5ea09957810ed2c04dab
+ Author: Jens Maurer
+ Date: Wed Mar 6 20:56:58 2019 +0100
+
+ [expr.new] Move treatment of arrays of unknown bound
+
+ commit ce2f08ab94123adb44e58f1176c6ae4f3209eb60
+ Author: Richard Smith
+ Date: Mon Mar 11 17:20:25 2019 -0700
+
+ [dcl.init] Merge new direct aggregate init wording into class direct
+ initialization bullet to avoid the wording being unreachable due to an
+ "Otherwise" chain.
+
+ commit 691b7c10530d3265afbf445dff3dd129c7c5692e
+ Author: Dawn Perchik
+ Date: Sun Mar 10 16:15:53 2019 -0700
+
+ [dcl.init] Moved the changed bullet in 17.5 to before 17.6.3.
+
+ commit 5f7461d24bc0e9867458a043adf04aa8c4ceed73
+ Author: Richard Smith
+ Date: Fri Mar 8 16:11:34 2019 -0800
+
+ [temp.dep.type] Rephrase to avoid suggesting that an expression can be
+ the current instantiation.
+
+ A type can't be the current instantiation either, but that's a
+ pre-existing prevalent problem.
+
+ commit cbb21fb0210b6aade5591de94e3a27d7059e9d06
+ Author: Richard Smith
+ Date: Fri Mar 8 16:08:02 2019 -0800
+
+ [basic.def.odr] Apply additional edits from CWG review that were not
+ transcribed into P1359R0.
+
+ commit ac732bfe4eef01e9e2443dac6138270695d7cbf9
+ Author: Richard Smith
+ Date: Fri Mar 8 12:24:49 2019 -0800
+
+ [expr.prim.lambda.capture] Add missing close parentheses in CWG2358
+ examples.
+
+ Fixes #2680.
+
+ commit 502e419ca75c9656394d1998036b4b810e8bdb17
+ Author: Richard Smith
+ Date: Fri Mar 8 12:00:26 2019 -0800
+
+ [dcl.type.simple] Fix inaccurate note added by CWG2332
+
+ [temp.local] Clarify that the surrounding syntax and construct directly
+ dictates whether an injected-class-name is syntactically a template-name
+ or a type-name, not just what it means.
+
+ commit f4346ece403e469e800d635a75baafb9c411aa1b
+ Author: Richard Smith
+ Date: Fri Mar 8 11:39:36 2019 -0800
+
+ [expr.static.cast] Fix wording of CWG2310 to match CWG intent (verified
+ on core reflector):
+
+ - in p11, require D to be a complete class type, not B
+ - in p12, rephrase to avoid the suggestion that we're talking about a
+ different D than the one already in scope
+
+ commit 6f34b0513ed6d974b86a27429f8f4d02a6c18b88
+ Author: Hana Dusíková
+ Date: Fri Feb 22 11:03:29 2019 -1000
+
+ [pair.astuple, tuple.helper] Fix inconsistent class key in tuple_size/tuple_element. (#2679)
+
+ It was declared as a struct and specializations were classes.
+
+ commit 102a791b446f70f939a9b1e2e66fc3553aade19c
+ Author: Johel Ernesto Guerrero Peña
+ Date: Fri Feb 22 02:30:23 2019 -0400
+
+ [array.syn] Add reference to [array.tuple]
+
+ commit 7fe655909b4e5f01d8a8b71d6b508785c42c739e
+ Author: Richard Smith
+ Date: Wed Feb 20 17:04:55 2019 -1000
+
+ [temp.dep] [temp.dep.res] Remove redundant restatement of the two-phase
+ lookup rule. The primary location of the rule is [temp.dep.candidate].
+
+ commit 8fbeb52ae5daccc0352798ff023f6cba6aebcd42
+ Author: Richard Smith
+ Date: Mon Feb 18 17:15:39 2019 -1000
+
+ [basic.link] The notion of the linkage of a type is no longer used for
+ any purpose. Remove it and move its example next to the rule that
+ justifies it, and simplify said example.
+
+ commit cafdbd8036f3cf19e9cfc2f56584b219fb190602
+ Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+ Date: Fri Jan 25 00:12:44 2019 +0300
+
+ [expr.sizeof]/2: there are no expressions of reference type
+
+ commit 35ce0ae2eb2582dbc00fc824afbfa1d53a64de8d
+ Author: Richard Smith
+ Date: Wed Feb 13 17:51:58 2019 -0800
+
+ [depr.array.comp] Fix example of deprecated array comparison
+
+ commit 2f0bd979f41953890129fcbdc6ef37e3e90387ad
+ Author: Alisdair Meredith
+ Date: Sun Feb 10 16:53:15 2019 -0500
+
+ Add missing noexcept cross-refs for invokable traits (#2662)
+
+ All the other traits that use the phrase 'is known not to throw exceptions' also cross-reference the core clause for the noexcept operator, so add the missing cross reference to the more recently added traits.
+
+ commit 9f261368736c3666791329145292c1563a291861
+ Author: Alberto Barbati <2210776+iaanus@users.noreply.github.com>
+ Date: Sun Feb 10 22:52:36 2019 +0100
+
+ [temp.mem.func] Fixed text in example, which was not updated by CWG 249 (#2658)
+
+ commit f668df034ebf27ad53b5addad22af4f1293f829f
+ Author: Jens Maurer
+ Date: Sun Feb 10 22:50:42 2019 +0100
+
+ [algorithms.general,concepts.general] Add missing entries for summary tables (#2663)
diff --git a/papers/n4820.pdf b/papers/n4820.pdf
new file mode 100644
index 0000000000..026c8a569b
Binary files /dev/null and b/papers/n4820.pdf differ
diff --git a/papers/n4821.html b/papers/n4821.html
new file mode 100644
index 0000000000..4cdd33c605
--- /dev/null
+++ b/papers/n4821.html
@@ -0,0 +1,734 @@
+N4821
+N4821 Editors' Report -- Programming Languages -- C++
+
+2019-06-17
+Richard Smith (editor) (Google Inc)
+Thomas Köppe (co-editor) (Google DeepMind)
+Jens Maurer (co-editor)
+Dawn Perchik (co-editor) (Bright Side Computing, LLC)
+<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
+
+
+- N4820 is the current C++ working draft. It replaces N4810.
+- N4821 is this Editors' Report.
+
+
+Motions incorporated into working draft
+
+Fixed missing application of a portion of P1032R1,
+originally applied by 2018-11 LWG Motion 11.
+
+P1032R1 section 10 instructs that a set of changes be systematically applied to
+all char_traits
specializations. As part of the same set of motions,
+P0482R6 (2018-11 CWG Motion 11) added two new
+char_traits
specializations. The intent was for P1032R1 to also apply to the
+new specializations, assuming both motions passed (which they did).
+
+The application of P1032R1 section 10 to the char_traits
specializations
+added by P0482R6 was missed by editorial oversight, which is repaired in
+N4820.
+
+Notable editorial changes
+
+Changes to section labels
+
+To increase stability of references to the standard, labels are now also shown
+for tables and figures, in addition to the existing labels for sections.
+
+The editors hope that the use of stable table labels enables papers to say
+which tables the changes the papers describe affect increases clarity.
+
+Minor editorial fixes
+
+A log of editorial fixes made to the working draft since N4810 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 62c2f858b7c954750069f3514e2de2f58464df65
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Mar 18 14:06:16 2019 -0700
+
+ [lex.header] Fix note describing where a header-name token is formed to
+ match the changes applied by P1103R3.
+
+commit fccd9773064e596c4efa58b408bea0615623ff78
+Author: Casey Carter <Casey@Carter.net>
+Date: Wed Mar 20 17:32:25 2019 -0700
+
+ [limits.syn,numeric.limits] Declare partial specializations in header synopsis, not class synopsis
+
+ Moves the declarations of the partial specializations of numeric_limits into the header synopsis, out of the class template synopsis.
+
+commit b5ee2beccbe6c39d90768142e564ac749e45f47f
+Author: Krystian <sdkrystian@gmail.com>
+Date: Thu Mar 28 18:21:23 2019 -0400
+
+ [temp.expl.spec] Fix grammar (add missing article)
+
+ Added "an" before "explicit" to make the sentence grammatically correct.
+
+commit d45c031e2b504cf5b609595751ae22e7122dd4e3
+Author: Akira Takahashi <faithandbrave@gmail.com>
+Date: Thu Apr 11 19:54:15 2019 +0900
+
+ [memory.syn] Add declaration of primary template "atomic"
+
+ Partial specializations are declared thereafter.
+
+commit f64094025dbbec5daa268f1b5a98f6de37c4e2c2
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Apr 11 12:55:18 2019 +0200
+
+ [equal.range] Fix formatting of 'Returns' clause. (#2823)
+
+commit f90f4ea7ba38fef6675c0900d93543dded8c7260
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Thu Apr 11 06:56:42 2019 -0400
+
+ [iterator.traits] Remove redundant required expression in cpp17-input-iterator (#2817)
+
+commit 7c1c2611eac4b970a98bf3dd675daa19f9a7fd5c
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Apr 15 15:14:43 2019 -0700
+
+ [expr.ass] Move higher-precedence productions to before the assignment
+ production in the grammar, to be consistent with how we order these
+ productions throughout [expr].
+
+commit 4c21c0c2565effa6c1e672b09540bd6533c02f15
+Author: Eelis <github.com@contacts.eelis.net>
+Date: Sat Apr 20 01:08:09 2019 +0200
+
+ [time.cal.ym.nonmembers] Add missing \pnum for Complexity element. (#2836)
+
+commit fdd3787e0cf76b9c6a3461a32789cf1ffcf9c39d
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Apr 26 16:27:52 2019 -0700
+
+ [temp.inst] Fix bogus double-spacing after colon in example.
+
+commit 40c9aa75e8f32e8bab935c04459bf8f648aa89b0
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Apr 29 10:52:32 2019 -0700
+
+ [atomics.types.operations] Fix typo "indeteminate"
+
+ Fixes #2849
+
+commit 569f41ce7410becceaf5537c148b1bc420139bb0
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Apr 30 11:21:10 2019 +0200
+
+ [macros] Adjust \tref to include the word 'Table' in the link text. (#2851)
+
+commit 0bae532004c6117b2111d6622d85bd13577a4aaa
+Author: Random Internet Cat <jason.e.cobb@gmail.com>
+Date: Tue Apr 30 14:57:04 2019 -0400
+
+ [basic.life] Remove erroneous comma in description of treatment of storage out-of-lifetime (#2842)
+
+commit 0f666fa7b5c5a1f869ca0e3bb2506389546a45bd
+Author: Natsu <chino@hotococoa.moe>
+Date: Wed May 1 03:20:56 2019 +0800
+
+ [cstdio.syn] Rename parameter of function "rename" (#2840)
+
+ The second parameter of function "rename" is called "new", which is a keyword in C++.
+
+commit 8b3480987ee9962cb4191b9230fd9ff6083a273d
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Tue Apr 30 15:23:12 2019 -0400
+
+ [alg.unique] Remove <> after ranges::equal_to (#2826)
+
+commit 65194f717a16bb57da02e7bd1aea02c835dc89d1
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Tue Apr 30 15:33:17 2019 -0400
+
+ [algorithms.requirements] Say 'below to account for clause move (#2812)
+
+commit 27e371dae3fc6484cc2f1bf65d06f9578efd3c32
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Tue Apr 30 16:00:01 2019 -0400
+
+ [iterator.cust] Introduce expression-equivalent list as in [ranges]. (#2845)
+
+commit 205f6c7dff00a5e8c41bc454b0ffe5ac610853ae
+Author: Glen Fernandes <glen.fernandes@gmail.com>
+Date: Wed May 1 06:05:42 2019 +1000
+
+ [pointer.conversion] Reorder overloads of to_address (#2814)
+
+ pointer.conver
+
+commit da5050ce1092b76ba93699bfd0d6424cd984830a
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue Apr 30 13:10:02 2019 -0700
+
+ [coroutine.traits.primary] Hyphenate "program-defined" (#2810)
+
+commit f3d90566f3ca7798fec4fe36c425d03d7dfd8e0f
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Wed May 1 07:24:45 2019 +0100
+
+ [ranges.dangling] Fix namespace of ranges::dangling (#2829)
+
+ This fixes an editorial mistake in P1252R2; the original proposal correctly
+ defined "dangling" in namespace std::ranges (see P0896R1).
+
+commit 70f8c128e6bef2bf01373ab7c673dee318a89fd6
+Author: frederick-vs-ja <de34@live.cn>
+Date: Fri May 3 05:29:59 2019 +0800
+
+ [iterators] Add "ranges::" for "iterator_t" (#2860)
+
+ "inserter" and "insert_iterator" are in namespace "std", so
+ "ranges::iterator_t" should be used in their declarations.
+
+commit 7ac32d9c5b134b7e899186b6df8e57aeed7253f1
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat May 4 00:57:42 2019 +0200
+
+ [utilities,containers] Harmonize presentation of tuple_element. (#2868)
+
+commit 2eadc8c192dc60981dffd11a1904acda9df5ad01
+Author: Agustín Bergé <k@fusionfenix.com>
+Date: Sun May 5 19:34:17 2019 -0300
+
+ [optional.ctor] Remove extra dot. (#2875)
+
+commit e095f2d889f382f0ebfb4f16018bda55d437ed2e
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun May 5 22:44:42 2019 +0200
+
+ [expr.prim.lambda] Simplify grammar for lambda-expression.
+
+commit 6c87900e78191d1d5d8f79d09b9f78fca83321ff
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue May 7 02:22:36 2019 +0200
+
+ [map,multimap] Add index entries for members of value_compare. (#2861)
+
+commit f031dfcd84ad9901a552db8241e50cee4bbd5386
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon May 13 16:08:32 2019 -0700
+
+ [module.global] Make the note that only preprocessing directives can
+ appear in the global module fragment prior to preprocessing a bit more
+ obvious and prominent.
+
+commit 32c67d4ee782903e1f051c94e68816a9e188b11f
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Sat May 18 11:24:20 2019 -0400
+
+ [fs.path.query,fs.op.equivalent] Use 'otherwise', not 'else' (#2883)
+
+commit 40241be416a0babfc41015be4a69ce1a9aa76358
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue May 21 11:21:54 2019 -0700
+
+ [concept.boolean] Simplify first requirement (#2888)
+
+ See P1084 and P0896.
+
+commit 1b7c624e0339d838d8c91253262e0379d22506a5
+Author: frederick-vs-ja <de34@live.cn>
+Date: Wed May 22 02:24:07 2019 +0800
+
+ [view.interface] Drop unused exposition-only templates (#2881)
+
+commit 5c1728b61a0a66fe7f1818b399f742274fce36ed
+Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+Date: Fri May 24 01:26:25 2019 +0300
+
+ [dcl.init.aggr] Aggregates can have inherited non-public data members (#2892)
+
+commit 665a94500cb78d4b6d2795d396b51df2054094a1
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri May 24 20:24:47 2019 +0200
+
+ [expr.alignof,expr.unary.noexcept] Reorder to after [expr.sizeof]. (#2862)
+
+commit 3526e99dc1257aa6fce561dc2dc020068982b42f
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Fri May 24 20:27:24 2019 +0100
+
+ [fs.rec.dir.itr.members] Change \ensures to \remarks for pop() (#2830)
+
+commit 68c7072ddb7d5ba66aca6d25a054c0eca8c01775
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri May 24 21:31:22 2019 +0200
+
+ [views.span] Move description of iterators to [span.iterators]. (#2864)
+
+commit aa9fe1fc99da36602e2600ac16636fa7b504b4e5
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri May 24 22:15:00 2019 +0200
+
+ [time.cal.ymwd.nonmembers] Fix typo in parameter names. (#2895)
+
+commit 8cef0f3c119459670335a4a7846344b38ac51918
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon May 27 09:04:34 2019 +0200
+
+ [char.traits.specializations.char8.t] Make all members constexpr. (#2833)
+
+ Fix missed application of P1032R1 to the result of applying P0482R6;
+ both papers were moved at the 2018-11 meeting.
+
+commit 127bb3653647a350836bb99b4fdc16716de3957a
+Author: Alisdair Meredith <alisdairm@me.com>
+Date: Tue May 28 16:02:20 2019 -0400
+
+ [except.terminate] thread has move-assignment, not copy (#2903)
+
+ The copy-assignment operator for std::thread is deleted, but the
+ move-assignment operator documents a call to std::terminate.
+
+commit f788e132dbfe4252f2852b6123d0bac4674e7dd5
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue May 28 22:28:49 2019 +0200
+
+ [allocator.adaptor.syn] Avoid confusing term 'memory resource'. (#2904)
+
+commit b2e16a61cdbbf177fd8f9e868c9d611d4d9fa50f
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Wed May 29 20:07:18 2019 +0100
+
+ [dcl.mptr] Add \pnum to note already in a separate paragraph (#2907)
+
+commit 5dce3660fdf06d4c63efeffc329d9a9436c51ea5
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed May 29 21:54:28 2019 +0200
+
+ [time.zone.info] Add missing 'Returns' items. (#2901)
+
+ Also add a missing 'Effects' item.
+
+commit b9f2d303359502de27d399b13e5de41432ce6909
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed May 29 22:33:01 2019 +0200
+
+ [stmt.stmt,basic.scope.block] Remove normative redundancy.
+
+commit 871b9e1d91ad939afe46b66e6139a527e773200e
+Author: Casey Carter <Casey@Carter.net>
+Date: Thu May 30 11:29:17 2019 -0700
+
+ [coroutine.handle,coroutine.handle.export.import] "static" before "constexpr" (#2811)
+
+commit 899cce08197bb3311e6942dee134cee470625342
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Jun 1 14:23:54 2019 +0200
+
+ [except.uncaught] Clarify duration of uncaught exception.
+
+commit 5df26e149d1cf89c54614fe5f837eef7c6104208
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Jun 3 12:28:49 2019 -0700
+
+ [basic.def.odr] Make case consistent in first word of bullets.
+
+commit a61da77b992f7346bb559ba59c5f53a7df90a569
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue Jun 4 14:07:18 2019 -0700
+
+ [dcl.fct.def.default] Add missing comma
+
+commit 5b8ed33fdb283364a6a5e7b9572f3e5e16650f40
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Nov 30 23:42:08 2017 +0100
+
+ [language.support, utilities] Condense description of exception classes
+
+commit b6f44de194a2e5702d9658c0e5ed1a8f4f647ece
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Jun 5 22:39:40 2019 +0200
+
+ [module.interface] Use 'namespace-definition',
+
+ not the undefined term 'namespace-declaration'.
+
+commit 04e32a6e79d2a51eeb930e89356dfda27bed841d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jun 7 01:56:40 2019 +0200
+
+ [unord.req] Consistently use 'Average case x, worst case y.' (#2921)
+
+ Changed from sometimes having 'Worst case' start a separate sentence.
+
+commit 7830d39615bf46563303156ca5f6609c02dd5820
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Tue Jun 11 18:23:12 2019 +0100
+
+ [algorithms.parallel.exec],[alg.set.operations],[alg.min.max],[alg.c.library] remove empty parens (#2925)
+
+ When referring to a function, use its name, not a call expression.
+
+commit 12a28a2eb9f182794fdaf25f1ee5a24e8fa71f1d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jun 11 23:02:46 2019 +0200
+
+ [time.cal.ymwdlast.members] Move statement on class properties (#2927)
+
+ to [time.cal.ymwdlast.overview], consistent with
+ neighboring similar subclauses.
+
+commit 18e005d77a64c930252c2f9f809dc2b40124f7f1
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue Jun 11 14:54:54 2019 -0700
+
+ [alg.random.sample] Remove redundant requirement (#2798)
+
+ [rand.req.urng]/1 requires that UniformRandomBitGenerator
+ model UnsignedIntegral. [alg.random.sample]/1.5 requires Distance
+ to be an integer type. Any integral type is convertible to any other
+ integral type.
+
+commit daa9a7d0937feb54bc9389096324e5ba36df2f9e
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Tue May 28 08:15:29 2019 +0100
+
+ [fs.path.append] Fix examples to show correct results for Windows
+
+ Also correct the fact that the results were shown as string literals,
+ not paths, and that the examples for path::operator/=(const path&) were
+ actually using the non-member operator/(const path&, const path&)
+ instead.
+
+ Also line up the comments to the 32nd column.
+
+commit 85f634a82a6f23518245ed251690df52b3555c38
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Thu Mar 28 09:20:53 2019 +0000
+
+ [dcl.type.elab] Mix struct/class in example
+
+ Extend the example to show that the choice of 'class' or 'struct' in an
+ elaborated-type-name referring to a class is not significant.
+
+commit a0f56d5ceb8aeb45549b173164302ef263f0d3c4
+Author: Casey Carter <Casey@Carter.net>
+Date: Wed Jun 12 15:46:55 2019 -0700
+
+ [istream.sentry] Remove unreferenced private typedef-name traits_type (#2818)
+
+commit a3eec72ed7a7cd942081b5d5a90737614c67d057
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Apr 10 23:53:39 2019 +0200
+
+ [basic.lookup.elab] Clarify example to refer to injected-class-name
+
+commit 99ec26cfca252dd5f8843ccf54ded17ed95b2436
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Apr 29 22:34:58 2019 +0200
+
+ [dcl.stc,dcl.type.cv] Avoid redundancy when specifying 'mutable'.
+
+commit 506b67005b66af3afbc6edd7bedc772750d0710b
+Author: Krystian Stasiowski <sdkrystian@gmail.com>
+Date: Wed Jun 12 18:57:20 2019 -0400
+
+ [namespace.def] Remove redundant mention of "global scope".
+
+ The global scope is a namespace scope.
+
+commit 76a0595989a140d142efc236afbb66d1b6e975b6
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri May 3 01:10:13 2019 +0200
+
+ [expr.call,expr.reinterpret.cast] Adjust cross-references for
+ type violations in function calls.
+
+commit dd7b5190279d29f09db4e3009d37398ed6f24de3
+Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+Date: Fri May 3 14:03:19 2019 -0400
+
+ [string.view.template][string.view.iterators] Move requirements to a more appropriate place
+
+commit 490d0dad072759b448b097eff8fb7b2c304573cd
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun May 5 22:30:29 2019 +0200
+
+ [dcl.dcl,temp.spec] Move normative statements on restrictions for
+ explicit specializations and explicit instantiations
+ to [temp.spec] and its subsections.
+
+commit 8845c5c95a62ab7a196016ff484412ce826d2725
+Author: Jason Cobb <jason.e.cobb@gmail.com>
+Date: Fri May 10 23:07:40 2019 -0400
+
+ [dcl.dcl]/11 Storage from object definitions has proper alignment
+
+commit 373176cfe330ab22a8f6a4273da4817ab9d17438
+Author: Casey Carter <Casey@Carter.net>
+Date: Wed May 22 07:44:42 2019 -0700
+
+ [concept.swappable] Strike array poison pill swap overload
+
+ Since lookup is only performed when at least one argument has class or enumeration type, template argument deduction can never succeed for the poisin pill overload with two parameters of reference-to-array type; it can be struck with no normative impact.
+
+commit 8eff9b95eeedd9fb08816c51f2bb4e4c151de40f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue May 28 08:55:10 2019 +0200
+
+ [expr.sizeof,expr.alignof,expr.unary.noexcept] Clarify value category.
+
+ Also remove the undefined term 'constant' and
+ instead add a note pointing to [expr.const].
+
+commit 45d9fae43d97355735d81a839a5dbb7abec60aa4
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Wed May 29 09:48:09 2019 +0100
+
+ [basic.compound] Replace four refs with a single one to [dcl.meaning]
+
+commit 2c5066bde3eb4300a4f190b491a89400b827334d
+Author: Jason Cobb <jason.e.cobb@gmail.com>
+Date: Mon Jun 3 12:26:31 2019 -0400
+
+ [over.call.object] Fix surrogate calls with regards to cv-qualifiers
+
+ Standardizes existing practice. All of GCC, Clang, MSVC, ICC in pedantic mode already behave as if all of these changes were made.
+
+commit a02993d3ca83b88140eb5b03f5798ba2f9a77203
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue Jun 4 18:28:48 2019 -0700
+
+ [range.semi.wrap] Rename "semiregular" to "semiregular-box"
+
+ ...to avoid confusion with the concept `Semiregular`. Update the uses in [range.single.view, range.filter.view,range.transform.view], and add a reference to [range.single.view] which now precedes [range.semi.wrap] since the "range factories" were pulled out into a separate subclause before the "range adaptors."
+
+commit 042e0356bced518954c5ca1c9425226dbeb8b64a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Jun 5 22:44:29 2019 +0200
+
+ [stmt.return.coroutine] Move one level up to avoid hanging paragraphs.
+
+commit 5c5570d29e64c3c143dad6175df7a41e7cef6d3d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jun 7 00:02:22 2019 +0200
+
+ [expr.add] Avoid x[i] syntax when defining pointer arithmetic.
+
+commit 7756db991e1343bb60bccf43ae825ff55713bfdb
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jun 7 00:26:34 2019 +0200
+
+ [expr.unary.op] Use bullets to clarify the address-of operator.
+
+ Also cover the missed case of a prvalue qualified-id.
+
+commit c60c94398be23f2e5a407c8e3461b692c8fe508d
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jun 11 20:24:38 2019 +0200
+
+ [lex] Fix stray uses of 'source character set'
+
+ where it is obvious that 'basic source character set'
+ is meant.
+
+commit 2ee3d07e93049866f6602829dd0ebf469e25f0d2
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jun 11 20:32:42 2019 +0200
+
+ [range.split.outer] Convert trailing cross-reference to prefix style.
+
+commit 6f9959805eb3e8e802192b0fb71dbe160ed68a06
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Jul 21 16:21:40 2018 +0200
+
+ [dcl.array] Rework description.
+
+ Group examples with the corresponding normative statements.
+ Clarify the meaning of 'array type'.
+ Use 'declarator-id' instead of 'identifier'.
+
+commit f6ad222bfafd939180c9c65f7b0116d0d340001b
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon May 27 09:20:57 2019 +0200
+
+ [range.prim.size] Clarify by adding 'respectively'.
+
+commit b3b1f637f12e2d0b71e351f5c9c3f6acd5059eaa
+Author: Casey Carter <Casey@Carter.net>
+Date: Fri Jun 14 14:21:05 2019 -0700
+
+ [library-wide] Use "model" instead of "satisfy" for semantic library concept requirements
+
+ Consistently use "satisfy" to mean the syntactic requirements are met, and "model" to mean the semantic requirements are met.
+
+ Updates: [structure.requirements],[customization.point.object],[res.on.requirements],[concepts], and [range.semi.wrap].
+
+ Fixes #2591.
+
+commit b50067fe2dec316efc24ae80ae352f33eb31c3af
+Author: Casey Carter <Casey@Carter.net>
+Date: Sun Apr 14 12:36:57 2019 -0700
+
+ [range.counted] Introduce "Counted view"
+
+ Fixes #2825.
+
+commit da3660306d52d7c1813b6cfae71e78851cd37831
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Jun 6 09:21:12 2019 +0200
+
+ [expr.unary.op] Modernize wording for obtaining a pointer.
+
+commit 97066177229afe6f2935da73b848254ea27a16a2
+Author: Marc Mutz <marc.mutz@kdab.com>
+Date: Mon Jun 17 12:50:30 2019 +0200
+
+ [list.erasure][forward.list.erasure] Fix missing lambda braces (#2936)
+
+commit f8b8c257ae5bce961c0de29ed8e0ce2d88497acc
+Author: Kazutoshi SATODA <k_satoda@f2.dion.ne.jp>
+Date: Sun Sep 9 00:11:36 2018 +0900
+
+ [expr.new] Harmonize rules of constant array bounds > 0
+
+ While "shall evaluate to a strictly positive value" is not wrong,
+ "shall be greater than zero" is easier and is used in [dcl.array] to
+ describe the same rule.
+
+commit 15c8259726b565f2a9b3adacdcc85a0727841c7c
+Author: Casey Carter <Casey@Carter.net>
+Date: Mon Jun 17 09:52:08 2019 -0700
+
+ [library-wide] Use "meet" for non-concept type requirements (#2796)
+
+ Partially addresses #1263.
+
diff --git a/papers/n4821.md b/papers/n4821.md
new file mode 100644
index 0000000000..c917761e68
--- /dev/null
+++ b/papers/n4821.md
@@ -0,0 +1,608 @@
+# N4821 Editors' Report -- Programming Languages -- C++
+
+2019-06-17
+Richard Smith (editor) (Google Inc)
+Thomas Köppe (co-editor) (Google DeepMind)
+Jens Maurer (co-editor)
+Dawn Perchik (co-editor) (Bright Side Computing, LLC)
+``
+
+## 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
+
+ * [N4820](http://wg21.link/n4820) is the current C++ working draft. It replaces [N4810](http://wg21.link/n4810).
+ * N4821 is this Editors' Report.
+
+## Motions incorporated into working draft
+
+Fixed missing application of a portion of [P1032R1](http://wg21.link/p1032r1),
+originally applied by 2018-11 LWG Motion 11.
+
+P1032R1 section 10 instructs that a set of changes be systematically applied to
+all `char_traits` specializations. As part of the same set of motions,
+[P0482R6](http://wg21.link/p0482r6) (2018-11 CWG Motion 11) added two new
+`char_traits` specializations. The intent was for P1032R1 to also apply to the
+new specializations, assuming both motions passed (which they did).
+
+The application of P1032R1 section 10 to the `char_traits` specializations
+added by P0482R6 was missed by editorial oversight, which is repaired in
+N4820.
+
+## Notable editorial changes
+
+### Changes to section labels
+
+To increase stability of references to the standard, labels are now also shown
+for tables and figures, in addition to the existing labels for sections.
+
+The editors hope that the use of stable table labels enables papers to say
+which tables the changes the papers describe affect increases clarity.
+
+## Minor editorial fixes
+
+A log of editorial fixes made to the working draft since N4810 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/n4810...n4820).
+
+ commit 62c2f858b7c954750069f3514e2de2f58464df65
+ Author: Richard Smith
+ Date: Mon Mar 18 14:06:16 2019 -0700
+
+ [lex.header] Fix note describing where a header-name token is formed to
+ match the changes applied by P1103R3.
+
+ commit fccd9773064e596c4efa58b408bea0615623ff78
+ Author: Casey Carter
+ Date: Wed Mar 20 17:32:25 2019 -0700
+
+ [limits.syn,numeric.limits] Declare partial specializations in header synopsis, not class synopsis
+
+ Moves the declarations of the partial specializations of numeric_limits into the header synopsis, out of the class template synopsis.
+
+ commit b5ee2beccbe6c39d90768142e564ac749e45f47f
+ Author: Krystian
+ Date: Thu Mar 28 18:21:23 2019 -0400
+
+ [temp.expl.spec] Fix grammar (add missing article)
+
+ Added "an" before "explicit" to make the sentence grammatically correct.
+
+ commit d45c031e2b504cf5b609595751ae22e7122dd4e3
+ Author: Akira Takahashi
+ Date: Thu Apr 11 19:54:15 2019 +0900
+
+ [memory.syn] Add declaration of primary template "atomic"
+
+ Partial specializations are declared thereafter.
+
+ commit f64094025dbbec5daa268f1b5a98f6de37c4e2c2
+ Author: Jens Maurer
+ Date: Thu Apr 11 12:55:18 2019 +0200
+
+ [equal.range] Fix formatting of 'Returns' clause. (#2823)
+
+ commit f90f4ea7ba38fef6675c0900d93543dded8c7260
+ Author: Johel Ernesto Guerrero Peña
+ Date: Thu Apr 11 06:56:42 2019 -0400
+
+ [iterator.traits] Remove redundant required expression in cpp17-input-iterator (#2817)
+
+ commit 7c1c2611eac4b970a98bf3dd675daa19f9a7fd5c
+ Author: Richard Smith
+ Date: Mon Apr 15 15:14:43 2019 -0700
+
+ [expr.ass] Move higher-precedence productions to before the assignment
+ production in the grammar, to be consistent with how we order these
+ productions throughout [expr].
+
+ commit 4c21c0c2565effa6c1e672b09540bd6533c02f15
+ Author: Eelis
+ Date: Sat Apr 20 01:08:09 2019 +0200
+
+ [time.cal.ym.nonmembers] Add missing \pnum for Complexity element. (#2836)
+
+ commit fdd3787e0cf76b9c6a3461a32789cf1ffcf9c39d
+ Author: Richard Smith
+ Date: Fri Apr 26 16:27:52 2019 -0700
+
+ [temp.inst] Fix bogus double-spacing after colon in example.
+
+ commit 40c9aa75e8f32e8bab935c04459bf8f648aa89b0
+ Author: Richard Smith
+ Date: Mon Apr 29 10:52:32 2019 -0700
+
+ [atomics.types.operations] Fix typo "indeteminate"
+
+ Fixes #2849
+
+ commit 569f41ce7410becceaf5537c148b1bc420139bb0
+ Author: Jens Maurer
+ Date: Tue Apr 30 11:21:10 2019 +0200
+
+ [macros] Adjust \tref to include the word 'Table' in the link text. (#2851)
+
+ commit 0bae532004c6117b2111d6622d85bd13577a4aaa
+ Author: Random Internet Cat
+ Date: Tue Apr 30 14:57:04 2019 -0400
+
+ [basic.life] Remove erroneous comma in description of treatment of storage out-of-lifetime (#2842)
+
+ commit 0f666fa7b5c5a1f869ca0e3bb2506389546a45bd
+ Author: Natsu
+ Date: Wed May 1 03:20:56 2019 +0800
+
+ [cstdio.syn] Rename parameter of function "rename" (#2840)
+
+ The second parameter of function "rename" is called "new", which is a keyword in C++.
+
+ commit 8b3480987ee9962cb4191b9230fd9ff6083a273d
+ Author: Johel Ernesto Guerrero Peña
+ Date: Tue Apr 30 15:23:12 2019 -0400
+
+ [alg.unique] Remove <> after ranges::equal_to (#2826)
+
+ commit 65194f717a16bb57da02e7bd1aea02c835dc89d1
+ Author: Johel Ernesto Guerrero Peña
+ Date: Tue Apr 30 15:33:17 2019 -0400
+
+ [algorithms.requirements] Say 'below to account for clause move (#2812)
+
+ commit 27e371dae3fc6484cc2f1bf65d06f9578efd3c32
+ Author: Johel Ernesto Guerrero Peña
+ Date: Tue Apr 30 16:00:01 2019 -0400
+
+ [iterator.cust] Introduce expression-equivalent list as in [ranges]. (#2845)
+
+ commit 205f6c7dff00a5e8c41bc454b0ffe5ac610853ae
+ Author: Glen Fernandes
+ Date: Wed May 1 06:05:42 2019 +1000
+
+ [pointer.conversion] Reorder overloads of to_address (#2814)
+
+ pointer.conver
+
+ commit da5050ce1092b76ba93699bfd0d6424cd984830a
+ Author: Casey Carter
+ Date: Tue Apr 30 13:10:02 2019 -0700
+
+ [coroutine.traits.primary] Hyphenate "program-defined" (#2810)
+
+ commit f3d90566f3ca7798fec4fe36c425d03d7dfd8e0f
+ Author: Jonathan Wakely
+ Date: Wed May 1 07:24:45 2019 +0100
+
+ [ranges.dangling] Fix namespace of ranges::dangling (#2829)
+
+ This fixes an editorial mistake in P1252R2; the original proposal correctly
+ defined "dangling" in namespace std::ranges (see P0896R1).
+
+ commit 70f8c128e6bef2bf01373ab7c673dee318a89fd6
+ Author: frederick-vs-ja
+ Date: Fri May 3 05:29:59 2019 +0800
+
+ [iterators] Add "ranges::" for "iterator_t" (#2860)
+
+ "inserter" and "insert_iterator" are in namespace "std", so
+ "ranges::iterator_t" should be used in their declarations.
+
+ commit 7ac32d9c5b134b7e899186b6df8e57aeed7253f1
+ Author: Jens Maurer
+ Date: Sat May 4 00:57:42 2019 +0200
+
+ [utilities,containers] Harmonize presentation of tuple_element. (#2868)
+
+ commit 2eadc8c192dc60981dffd11a1904acda9df5ad01
+ Author: Agustín Bergé
+ Date: Sun May 5 19:34:17 2019 -0300
+
+ [optional.ctor] Remove extra dot. (#2875)
+
+ commit e095f2d889f382f0ebfb4f16018bda55d437ed2e
+ Author: Jens Maurer
+ Date: Sun May 5 22:44:42 2019 +0200
+
+ [expr.prim.lambda] Simplify grammar for lambda-expression.
+
+ commit 6c87900e78191d1d5d8f79d09b9f78fca83321ff
+ Author: Jens Maurer
+ Date: Tue May 7 02:22:36 2019 +0200
+
+ [map,multimap] Add index entries for members of value_compare. (#2861)
+
+ commit f031dfcd84ad9901a552db8241e50cee4bbd5386
+ Author: Richard Smith
+ Date: Mon May 13 16:08:32 2019 -0700
+
+ [module.global] Make the note that only preprocessing directives can
+ appear in the global module fragment prior to preprocessing a bit more
+ obvious and prominent.
+
+ commit 32c67d4ee782903e1f051c94e68816a9e188b11f
+ Author: Johel Ernesto Guerrero Peña
+ Date: Sat May 18 11:24:20 2019 -0400
+
+ [fs.path.query,fs.op.equivalent] Use 'otherwise', not 'else' (#2883)
+
+ commit 40241be416a0babfc41015be4a69ce1a9aa76358
+ Author: Casey Carter
+ Date: Tue May 21 11:21:54 2019 -0700
+
+ [concept.boolean] Simplify first requirement (#2888)
+
+ See P1084 and P0896.
+
+ commit 1b7c624e0339d838d8c91253262e0379d22506a5
+ Author: frederick-vs-ja
+ Date: Wed May 22 02:24:07 2019 +0800
+
+ [view.interface] Drop unused exposition-only templates (#2881)
+
+ commit 5c1728b61a0a66fe7f1818b399f742274fce36ed
+ Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+ Date: Fri May 24 01:26:25 2019 +0300
+
+ [dcl.init.aggr] Aggregates can have inherited non-public data members (#2892)
+
+ commit 665a94500cb78d4b6d2795d396b51df2054094a1
+ Author: Jens Maurer
+ Date: Fri May 24 20:24:47 2019 +0200
+
+ [expr.alignof,expr.unary.noexcept] Reorder to after [expr.sizeof]. (#2862)
+
+ commit 3526e99dc1257aa6fce561dc2dc020068982b42f
+ Author: Jonathan Wakely
+ Date: Fri May 24 20:27:24 2019 +0100
+
+ [fs.rec.dir.itr.members] Change \ensures to \remarks for pop() (#2830)
+
+ commit 68c7072ddb7d5ba66aca6d25a054c0eca8c01775
+ Author: Jens Maurer
+ Date: Fri May 24 21:31:22 2019 +0200
+
+ [views.span] Move description of iterators to [span.iterators]. (#2864)
+
+ commit aa9fe1fc99da36602e2600ac16636fa7b504b4e5
+ Author: Jens Maurer
+ Date: Fri May 24 22:15:00 2019 +0200
+
+ [time.cal.ymwd.nonmembers] Fix typo in parameter names. (#2895)
+
+ commit 8cef0f3c119459670335a4a7846344b38ac51918
+ Author: Jens Maurer
+ Date: Mon May 27 09:04:34 2019 +0200
+
+ [char.traits.specializations.char8.t] Make all members constexpr. (#2833)
+
+ Fix missed application of P1032R1 to the result of applying P0482R6;
+ both papers were moved at the 2018-11 meeting.
+
+ commit 127bb3653647a350836bb99b4fdc16716de3957a
+ Author: Alisdair Meredith
+ Date: Tue May 28 16:02:20 2019 -0400
+
+ [except.terminate] thread has move-assignment, not copy (#2903)
+
+ The copy-assignment operator for std::thread is deleted, but the
+ move-assignment operator documents a call to std::terminate.
+
+ commit f788e132dbfe4252f2852b6123d0bac4674e7dd5
+ Author: Jens Maurer
+ Date: Tue May 28 22:28:49 2019 +0200
+
+ [allocator.adaptor.syn] Avoid confusing term 'memory resource'. (#2904)
+
+ commit b2e16a61cdbbf177fd8f9e868c9d611d4d9fa50f
+ Author: Jonathan Wakely
+ Date: Wed May 29 20:07:18 2019 +0100
+
+ [dcl.mptr] Add \pnum to note already in a separate paragraph (#2907)
+
+ commit 5dce3660fdf06d4c63efeffc329d9a9436c51ea5
+ Author: Jens Maurer
+ Date: Wed May 29 21:54:28 2019 +0200
+
+ [time.zone.info] Add missing 'Returns' items. (#2901)
+
+ Also add a missing 'Effects' item.
+
+ commit b9f2d303359502de27d399b13e5de41432ce6909
+ Author: Jens Maurer
+ Date: Wed May 29 22:33:01 2019 +0200
+
+ [stmt.stmt,basic.scope.block] Remove normative redundancy.
+
+ commit 871b9e1d91ad939afe46b66e6139a527e773200e
+ Author: Casey Carter
+ Date: Thu May 30 11:29:17 2019 -0700
+
+ [coroutine.handle,coroutine.handle.export.import] "static" before "constexpr" (#2811)
+
+ commit 899cce08197bb3311e6942dee134cee470625342
+ Author: Jens Maurer
+ Date: Sat Jun 1 14:23:54 2019 +0200
+
+ [except.uncaught] Clarify duration of uncaught exception.
+
+ commit 5df26e149d1cf89c54614fe5f837eef7c6104208
+ Author: Richard Smith
+ Date: Mon Jun 3 12:28:49 2019 -0700
+
+ [basic.def.odr] Make case consistent in first word of bullets.
+
+ commit a61da77b992f7346bb559ba59c5f53a7df90a569
+ Author: Casey Carter
+ Date: Tue Jun 4 14:07:18 2019 -0700
+
+ [dcl.fct.def.default] Add missing comma
+
+ commit 5b8ed33fdb283364a6a5e7b9572f3e5e16650f40
+ Author: Jens Maurer
+ Date: Thu Nov 30 23:42:08 2017 +0100
+
+ [language.support, utilities] Condense description of exception classes
+
+ commit b6f44de194a2e5702d9658c0e5ed1a8f4f647ece
+ Author: Jens Maurer
+ Date: Wed Jun 5 22:39:40 2019 +0200
+
+ [module.interface] Use 'namespace-definition',
+
+ not the undefined term 'namespace-declaration'.
+
+ commit 04e32a6e79d2a51eeb930e89356dfda27bed841d
+ Author: Jens Maurer
+ Date: Fri Jun 7 01:56:40 2019 +0200
+
+ [unord.req] Consistently use 'Average case x, worst case y.' (#2921)
+
+ Changed from sometimes having 'Worst case' start a separate sentence.
+
+ commit 7830d39615bf46563303156ca5f6609c02dd5820
+ Author: Jonathan Wakely
+ Date: Tue Jun 11 18:23:12 2019 +0100
+
+ [algorithms.parallel.exec],[alg.set.operations],[alg.min.max],[alg.c.library] remove empty parens (#2925)
+
+ When referring to a function, use its name, not a call expression.
+
+ commit 12a28a2eb9f182794fdaf25f1ee5a24e8fa71f1d
+ Author: Jens Maurer
+ Date: Tue Jun 11 23:02:46 2019 +0200
+
+ [time.cal.ymwdlast.members] Move statement on class properties (#2927)
+
+ to [time.cal.ymwdlast.overview], consistent with
+ neighboring similar subclauses.
+
+ commit 18e005d77a64c930252c2f9f809dc2b40124f7f1
+ Author: Casey Carter
+ Date: Tue Jun 11 14:54:54 2019 -0700
+
+ [alg.random.sample] Remove redundant requirement (#2798)
+
+ [rand.req.urng]/1 requires that UniformRandomBitGenerator
+ model UnsignedIntegral. [alg.random.sample]/1.5 requires Distance
+ to be an integer type. Any integral type is convertible to any other
+ integral type.
+
+ commit daa9a7d0937feb54bc9389096324e5ba36df2f9e
+ Author: Jonathan Wakely
+ Date: Tue May 28 08:15:29 2019 +0100
+
+ [fs.path.append] Fix examples to show correct results for Windows
+
+ Also correct the fact that the results were shown as string literals,
+ not paths, and that the examples for path::operator/=(const path&) were
+ actually using the non-member operator/(const path&, const path&)
+ instead.
+
+ Also line up the comments to the 32nd column.
+
+ commit 85f634a82a6f23518245ed251690df52b3555c38
+ Author: Jonathan Wakely
+ Date: Thu Mar 28 09:20:53 2019 +0000
+
+ [dcl.type.elab] Mix struct/class in example
+
+ Extend the example to show that the choice of 'class' or 'struct' in an
+ elaborated-type-name referring to a class is not significant.
+
+ commit a0f56d5ceb8aeb45549b173164302ef263f0d3c4
+ Author: Casey Carter
+ Date: Wed Jun 12 15:46:55 2019 -0700
+
+ [istream.sentry] Remove unreferenced private typedef-name traits_type (#2818)
+
+ commit a3eec72ed7a7cd942081b5d5a90737614c67d057
+ Author: Jens Maurer
+ Date: Wed Apr 10 23:53:39 2019 +0200
+
+ [basic.lookup.elab] Clarify example to refer to injected-class-name
+
+ commit 99ec26cfca252dd5f8843ccf54ded17ed95b2436
+ Author: Jens Maurer
+ Date: Mon Apr 29 22:34:58 2019 +0200
+
+ [dcl.stc,dcl.type.cv] Avoid redundancy when specifying 'mutable'.
+
+ commit 506b67005b66af3afbc6edd7bedc772750d0710b
+ Author: Krystian Stasiowski
+ Date: Wed Jun 12 18:57:20 2019 -0400
+
+ [namespace.def] Remove redundant mention of "global scope".
+
+ The global scope is a namespace scope.
+
+ commit 76a0595989a140d142efc236afbb66d1b6e975b6
+ Author: Jens Maurer
+ Date: Fri May 3 01:10:13 2019 +0200
+
+ [expr.call,expr.reinterpret.cast] Adjust cross-references for
+ type violations in function calls.
+
+ commit dd7b5190279d29f09db4e3009d37398ed6f24de3
+ Author: Johel Ernesto Guerrero Peña
+ Date: Fri May 3 14:03:19 2019 -0400
+
+ [string.view.template][string.view.iterators] Move requirements to a more appropriate place
+
+ commit 490d0dad072759b448b097eff8fb7b2c304573cd
+ Author: Jens Maurer
+ Date: Sun May 5 22:30:29 2019 +0200
+
+ [dcl.dcl,temp.spec] Move normative statements on restrictions for
+ explicit specializations and explicit instantiations
+ to [temp.spec] and its subsections.
+
+ commit 8845c5c95a62ab7a196016ff484412ce826d2725
+ Author: Jason Cobb
+ Date: Fri May 10 23:07:40 2019 -0400
+
+ [dcl.dcl]/11 Storage from object definitions has proper alignment
+
+ commit 373176cfe330ab22a8f6a4273da4817ab9d17438
+ Author: Casey Carter
+ Date: Wed May 22 07:44:42 2019 -0700
+
+ [concept.swappable] Strike array poison pill swap overload
+
+ Since lookup is only performed when at least one argument has class or enumeration type, template argument deduction can never succeed for the poisin pill overload with two parameters of reference-to-array type; it can be struck with no normative impact.
+
+ commit 8eff9b95eeedd9fb08816c51f2bb4e4c151de40f
+ Author: Jens Maurer
+ Date: Tue May 28 08:55:10 2019 +0200
+
+ [expr.sizeof,expr.alignof,expr.unary.noexcept] Clarify value category.
+
+ Also remove the undefined term 'constant' and
+ instead add a note pointing to [expr.const].
+
+ commit 45d9fae43d97355735d81a839a5dbb7abec60aa4
+ Author: Jonathan Wakely
+ Date: Wed May 29 09:48:09 2019 +0100
+
+ [basic.compound] Replace four refs with a single one to [dcl.meaning]
+
+ commit 2c5066bde3eb4300a4f190b491a89400b827334d
+ Author: Jason Cobb
+ Date: Mon Jun 3 12:26:31 2019 -0400
+
+ [over.call.object] Fix surrogate calls with regards to cv-qualifiers
+
+ Standardizes existing practice. All of GCC, Clang, MSVC, ICC in pedantic mode already behave as if all of these changes were made.
+
+ commit a02993d3ca83b88140eb5b03f5798ba2f9a77203
+ Author: Casey Carter
+ Date: Tue Jun 4 18:28:48 2019 -0700
+
+ [range.semi.wrap] Rename "semiregular" to "semiregular-box"
+
+ ...to avoid confusion with the concept `Semiregular`. Update the uses in [range.single.view, range.filter.view,range.transform.view], and add a reference to [range.single.view] which now precedes [range.semi.wrap] since the "range factories" were pulled out into a separate subclause before the "range adaptors."
+
+ commit 042e0356bced518954c5ca1c9425226dbeb8b64a
+ Author: Jens Maurer
+ Date: Wed Jun 5 22:44:29 2019 +0200
+
+ [stmt.return.coroutine] Move one level up to avoid hanging paragraphs.
+
+ commit 5c5570d29e64c3c143dad6175df7a41e7cef6d3d
+ Author: Jens Maurer
+ Date: Fri Jun 7 00:02:22 2019 +0200
+
+ [expr.add] Avoid x[i] syntax when defining pointer arithmetic.
+
+ commit 7756db991e1343bb60bccf43ae825ff55713bfdb
+ Author: Jens Maurer
+ Date: Fri Jun 7 00:26:34 2019 +0200
+
+ [expr.unary.op] Use bullets to clarify the address-of operator.
+
+ Also cover the missed case of a prvalue qualified-id.
+
+ commit c60c94398be23f2e5a407c8e3461b692c8fe508d
+ Author: Jens Maurer
+ Date: Tue Jun 11 20:24:38 2019 +0200
+
+ [lex] Fix stray uses of 'source character set'
+
+ where it is obvious that 'basic source character set'
+ is meant.
+
+ commit 2ee3d07e93049866f6602829dd0ebf469e25f0d2
+ Author: Jens Maurer
+ Date: Tue Jun 11 20:32:42 2019 +0200
+
+ [range.split.outer] Convert trailing cross-reference to prefix style.
+
+ commit 6f9959805eb3e8e802192b0fb71dbe160ed68a06
+ Author: Jens Maurer
+ Date: Sat Jul 21 16:21:40 2018 +0200
+
+ [dcl.array] Rework description.
+
+ Group examples with the corresponding normative statements.
+ Clarify the meaning of 'array type'.
+ Use 'declarator-id' instead of 'identifier'.
+
+ commit f6ad222bfafd939180c9c65f7b0116d0d340001b
+ Author: Jens Maurer
+ Date: Mon May 27 09:20:57 2019 +0200
+
+ [range.prim.size] Clarify by adding 'respectively'.
+
+ commit b3b1f637f12e2d0b71e351f5c9c3f6acd5059eaa
+ Author: Casey Carter
+ Date: Fri Jun 14 14:21:05 2019 -0700
+
+ [library-wide] Use "model" instead of "satisfy" for semantic library concept requirements
+
+ Consistently use "satisfy" to mean the syntactic requirements are met, and "model" to mean the semantic requirements are met.
+
+ Updates: [structure.requirements],[customization.point.object],[res.on.requirements],[concepts], and [range.semi.wrap].
+
+ Fixes #2591.
+
+ commit b50067fe2dec316efc24ae80ae352f33eb31c3af
+ Author: Casey Carter
+ Date: Sun Apr 14 12:36:57 2019 -0700
+
+ [range.counted] Introduce "Counted view"
+
+ Fixes #2825.
+
+ commit da3660306d52d7c1813b6cfae71e78851cd37831
+ Author: Jens Maurer
+ Date: Thu Jun 6 09:21:12 2019 +0200
+
+ [expr.unary.op] Modernize wording for obtaining a pointer.
+
+ commit 97066177229afe6f2935da73b848254ea27a16a2
+ Author: Marc Mutz
+ Date: Mon Jun 17 12:50:30 2019 +0200
+
+ [list.erasure][forward.list.erasure] Fix missing lambda braces (#2936)
+
+ commit f8b8c257ae5bce961c0de29ed8e0ce2d88497acc
+ Author: Kazutoshi SATODA
+ Date: Sun Sep 9 00:11:36 2018 +0900
+
+ [expr.new] Harmonize rules of constant array bounds > 0
+
+ While "shall evaluate to a strictly positive value" is not wrong,
+ "shall be greater than zero" is easier and is used in [dcl.array] to
+ describe the same rule.
+
+ commit 15c8259726b565f2a9b3adacdcc85a0727841c7c
+ Author: Casey Carter
+ Date: Mon Jun 17 09:52:08 2019 -0700
+
+ [library-wide] Use "meet" for non-concept type requirements (#2796)
+
+ Partially addresses #1263.
diff --git a/source/algorithms.tex b/source/algorithms.tex
index 5434dfa69c..f68441ae72 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
@@ -15,14 +15,14 @@
and algorithms from the ISO C library,
as summarized in \tref{algorithms.summary}.
-\begin{libsumtab}{Algorithms library summary}{tab:algorithms.summary}
-\ref{algorithms.requirements} & Algorithms requirements & \\
-\ref{algorithms.parallel} & Parallel algorithms & \\ \hline
-\ref{alg.nonmodifying} & Non-modifying sequence operations & \\
-\ref{alg.modifying.operations} & Mutating sequence operations & \tcode{} \\
-\ref{alg.sorting} & Sorting and related operations & \\ \hline
-\ref{numeric.ops} & Generalized numeric operations & \tcode{} \\ \rowsep
-\ref{alg.c.library} & C library algorithms & \tcode{} \\
+\begin{libsumtab}{Algorithms library summary}{algorithms.summary}
+\ref{algorithms.requirements} & Algorithms requirements & \\
+\ref{algorithms.parallel} & Parallel algorithms & \\ \rowsep
+\ref{alg.nonmodifying} & Non-modifying sequence operations & \tcode{} \\
+\ref{alg.modifying.operations} & Mutating sequence operations & \\
+\ref{alg.sorting} & Sorting and related operations & \\ \rowsep
+\ref{numeric.ops} & Generalized numeric operations & \tcode{} \\ \rowsep
+\ref{alg.c.library} & C library algorithms & \tcode{} \\
\end{libsumtab}
\rSec1[algorithms.requirements]{Algorithms requirements}
@@ -72,35 +72,35 @@
\tcode{InputIterator},
\tcode{InputIterator1}, or
\tcode{Input\-Iterator2},
- the template argument shall satisfy the
+ the template argument shall meet the
\oldconcept{InputIterator} requirements\iref{input.iterators}.
\item
If an algorithm's template parameter is named
\tcode{OutputIterator},
\tcode{OutputIterator1}, or
\tcode{Output\-Iterator2},
- the template argument shall satisfy the
+ the template argument shall meet the
\oldconcept{OutputIterator} requirements\iref{output.iterators}.
\item
If an algorithm's template parameter is named
\tcode{ForwardIterator},
\tcode{ForwardIterator1}, or
\tcode{Forward\-Iterator2},
- the template argument shall satisfy the
+ the template argument shall meet the
\oldconcept{ForwardIterator} requirements\iref{forward.iterators}.
\item
If an algorithm's template parameter is named
\tcode{BidirectionalIterator},
\tcode{Bidirectional\-Iterator1}, or
\tcode{BidirectionalIterator2},
- the template argument shall satisfy the
+ the template argument shall meet the
\oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators}.
\item
If an algorithm's template parameter is named
\tcode{RandomAccessIterator},
\tcode{Random\-AccessIterator1}, or
\tcode{RandomAccessIterator2},
- the template argument shall satisfy the
+ the template argument shall meet the
\oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators}.
\end{itemize}
@@ -108,7 +108,7 @@
If an algorithm's \effects element specifies
that a value pointed to by any iterator passed as an argument is modified,
then that algorithm has an additional type requirement:
-The type of that argument shall satisfy
+The type of that argument shall meet
the requirements of a mutable iterator\iref{iterator.requirements}.
\begin{note}
This requirement does not affect arguments that are named
@@ -264,7 +264,7 @@
\tcode{mismatch_result},
\tcode{copy_result}, and
\tcode{partition_copy_result}
-have the template parameters, data members, and special members specified above.
+have the template parameters, data members, and special members specified below.
They have no base classes or members other than those specified.
\rSec1[algorithms.parallel]{Parallel algorithms}
@@ -375,7 +375,7 @@
which are specified as modifying the object.
\begin{note}
For example,
-\tcode{swap()},
+\tcode{swap},
\tcode{++},
\tcode{--},
\tcode{@=}, and
@@ -3000,11 +3000,11 @@
\begin{itemdescr}
\pnum
\requires
-\tcode{Function} shall satisfy
-the \oldconcept{MoveConstructible} requirements (\tref{moveconstructible}).
+\tcode{Function} shall meet
+the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}).
\begin{note}
\tcode{Function} need not meet the requirements of
-\oldconcept{CopyConstructible} (\tref{copyconstructible}).
+\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}).
\end{note}
\pnum
@@ -3013,7 +3013,7 @@
every iterator in the range \range{first}{last},
starting from \tcode{first} and proceeding to \tcode{last - 1}.
\begin{note}
-If the type of \tcode{first} satisfies the requirements of a mutable iterator,
+If the type of \tcode{first} meets the requirements of a mutable iterator,
\tcode{f} may apply non-constant functions through the dereferenced iterator.
\end{note}
@@ -3041,14 +3041,14 @@
\begin{itemdescr}
\pnum
\requires
-\tcode{Function} shall satisfy the \oldconcept{CopyConstructible} requirements.
+\tcode{Function} shall meet the \oldconcept{CopyConstructible} requirements.
\pnum
\effects
Applies \tcode{f} to the result of dereferencing
every iterator in the range \range{first}{last}.
\begin{note}
-If the type of \tcode{first} satisfies the requirements of a mutable iterator,
+If the type of \tcode{first} meets the requirements of a mutable iterator,
\tcode{f} may apply non-constant functions through the dereferenced iterator.
\end{note}
@@ -3121,7 +3121,7 @@
\begin{itemdescr}
\pnum
\requires
-\tcode{Function} shall satisfy the \oldconcept{MoveConstructible} requirements
+\tcode{Function} shall meet the \oldconcept{MoveConstructible} requirements
\begin{note}
\tcode{Function} need not meet
the requirements of \oldconcept{CopyConstructible}.
@@ -3136,7 +3136,7 @@
Applies \tcode{f} to the result of dereferencing
every iterator in the range \range{first}{first + n} in order.
\begin{note}
-If the type of \tcode{first} satisfies the requirements of a mutable iterator,
+If the type of \tcode{first} meets the requirements of a mutable iterator,
\tcode{f} may apply non-constant functions through the dereferenced iterator.
\end{note}
@@ -3159,7 +3159,7 @@
\begin{itemdescr}
\pnum
\requires
-\tcode{Function} shall satisfy the \oldconcept{CopyConstructible} requirements.
+\tcode{Function} shall meet the \oldconcept{CopyConstructible} requirements.
\pnum
\requires
@@ -3170,7 +3170,7 @@
Applies \tcode{f} to the result of dereferencing
every iterator in the range \range{first}{first + n}.
\begin{note}
-If the type of \tcode{first} satisfies the requirements of a mutable iterator,
+If the type of \tcode{first} meets the requirements of a mutable iterator,
\tcode{f} may apply non-constant functions through the dereferenced iterator.
\end{note}
@@ -4206,7 +4206,7 @@
For the overload with an \tcode{ExecutionPolicy},
there may be a performance cost
if \tcode{iterator_traits::value_type}
-is not \oldconcept{\-Move\-Constructible} (\tref{moveconstructible}).
+is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}).
\end{note}
\pnum
@@ -4989,7 +4989,7 @@
\requires
For the algorithms in namespace \tcode{std},
the type of \tcode{*first}
-shall meet the \oldconcept{MoveAssignable} requirements (\tref{moveassignable}).
+shall meet the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
\pnum
\effects
@@ -5089,7 +5089,7 @@
For the overloads with an \tcode{ExecutionPolicy},
there may be a performance cost
if \tcode{iterator_traits::value_type} does not meet
-the \oldconcept{\-Move\-Constructible} (\tref{moveconstructible}) requirements.
+the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements.
\end{note}
\pnum
@@ -5133,7 +5133,7 @@
BinaryPredicate pred);
template S, class Proj = identity,
- IndirectRelation> C = ranges::equal_to<>>
+ IndirectRelation> C = ranges::equal_to>
constexpr I ranges::unique(I first, S last, C comp = {}, Proj proj = {});
template, Proj>> C = ranges::equal_to>
@@ -5162,7 +5162,7 @@
For the overloads in namepace \tcode{std},
\tcode{pred} shall be an equivalence relation and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveAssignable} requirements (\tref{moveassignable}).
+the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
\pnum
\effects
@@ -5262,9 +5262,9 @@
the \oldconcept{ForwardIterator} requirements and
its value type is the same as \tcode{T},
then \tcode{T} shall meet
- the \oldconcept{CopyAssignable} (\tref{copyassignable}) requirements.
+ the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
Otherwise, \tcode{T} shall meet both
- the \oldconcept{CopyConstructible} (\tref{copyconstructible}) and
+ the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and
\oldconcept{CopyAssignable} requirements.
\begin{note}
For the overloads with an \tcode{ExecutionPolicy},
@@ -5412,8 +5412,8 @@
\tcode{ForwardIterator} shall meet
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -5534,15 +5534,15 @@
\requires
\begin{itemize}
\item
- \tcode{PopulationIterator} shall satisfy
+ \tcode{PopulationIterator} shall meet
the \oldconcept{InputIterator} requirements\iref{input.iterators}.
\item
- \tcode{SampleIterator} shall satisfy
+ \tcode{SampleIterator} shall meet
the \oldconcept{OutputIterator} requirements\iref{output.iterators}.
\item
- \tcode{SampleIterator} shall satisfy
+ \tcode{SampleIterator} shall meet
the \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators}
- unless \tcode{Pop\-ulat\-ion\-Iter\-ator} satisfies
+ unless \tcode{Pop\-ulat\-ion\-Iter\-ator} meets
the \oldconcept{ForwardIterator} requirements\iref{forward.iterators}.
\item
\tcode{PopulationIterator}'s value type shall be
@@ -5550,9 +5550,8 @@
\item
\tcode{Distance} shall be an integer type.
\item
- \tcode{remove_reference_t} shall satisfy
- the requirements of a uniform random bit generator type\iref{rand.req.urng}
- whose return type is convertible to \tcode{Distance}.
+ \tcode{remove_reference_t} shall meet
+ the requirements of a uniform random bit generator type\iref{rand.req.urng}.
\item
\tcode{out} shall not be in the range \range{first}{last}.
\end{itemize}
@@ -5579,7 +5578,7 @@
\remarks
\begin{itemize}
\item
- Stable if and only if \tcode{PopulationIterator} satisfies
+ Stable if and only if \tcode{PopulationIterator} meets
the \oldconcept{ForwardIterator} requirements.
\item
To the extent that the implementation of this function makes use
@@ -5658,7 +5657,7 @@
\begin{itemdescr}
\pnum
\requires
-The type of \tcode{*first} shall satisfy
+The type of \tcode{*first} shall meet
the \oldconcept{MoveAssignable} requirements.
\pnum
@@ -5697,7 +5696,7 @@
\begin{itemdescr}
\pnum
\requires
-The type of \tcode{*first} shall satisfy
+The type of \tcode{*first} shall meet
the \oldconcept{MoveAssignable} requirements.
\tcode{ForwardIterator} shall meet
the \oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators} or
@@ -5709,7 +5708,7 @@
Otherwise, moves the element
from position \tcode{first + i} into \tcode{position first + n + i}
for each non-negative integer \tcode{i < (last - first) - n}.
-In the first overload case, if \tcode{ForwardIterator} satisfies
+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}.
@@ -5851,8 +5850,8 @@
\tcode{RandomAccessIterator} shall meet
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -5909,8 +5908,8 @@
\tcode{RandomAccessIterator} shall meet
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -5979,8 +5978,8 @@
\tcode{RandomAccessIterator} shall meet
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -6081,8 +6080,8 @@
\tcode{RandomAccessIterator} shall meet
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements},
the type of \tcode{*result_first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{\-Move\-Assignable} (\tref{moveassignable}) requirements,
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{\-Move\-Assignable} (\tref{cpp17.moveassignable}) requirements,
and the expression \tcode{*first}
shall be writable\iref{iterator.requirements.general} to \tcode{result_first}.
@@ -6283,8 +6282,8 @@
\tcode{RandomAccessIterator} shall meet
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -6481,13 +6480,15 @@
\item
For the overloads in namespace \tcode{std}:
\begin{codeblock}
-\{lower_bound(first, last, value, comp),
- upper_bound(first, last, value, comp)\}
+{lower_bound(first, last, value, comp),
+ upper_bound(first, last, value, comp)}
\end{codeblock}
\item
For the overloads in namespace \tcode{ranges}:
-\{ranges::lower_bound(first, last, value, comp, proj),
- ranges::upper_bound(first, last, value, comp, proj)\}
+\begin{codeblock}
+{ranges::lower_bound(first, last, value, comp, proj),
+ ranges::upper_bound(first, last, value, comp, proj)}
+\end{codeblock}
\end{itemize}
\pnum
@@ -6679,8 +6680,8 @@
\tcode{BidirectionalIterator} shall meet
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -6962,8 +6963,8 @@
\tcode{BidirectionalIterator} shall meet
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -7016,9 +7017,9 @@
They also work with \tcode{multiset}s\iref{multiset}
containing multiple copies of equivalent elements.
The semantics of the set operations are generalized to \tcode{multiset}s
-in a standard way by defining \tcode{set_union()}
+in a standard way by defining \tcode{set_union}
to contain the maximum number of occurrences of every element,
-\tcode{set_intersection()} to contain the minimum, and so on.
+\tcode{set_intersection} to contain the minimum, and so on.
\rSec3[includes]{\tcode{includes}}
@@ -7528,8 +7529,8 @@
shall be a valid heap with respect to \tcode{comp} and \tcode{proj}.
For the overloads in namespace \tcode{std},
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} requirements (\tref{moveconstructible}) and
-the \oldconcept{MoveAssignable} requirements (\tref{moveassignable}).
+the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}) and
+the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
\pnum
\effects
@@ -7581,8 +7582,8 @@
\tcode{RandomAccessIterator} shall meet
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConstructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -7635,8 +7636,8 @@
\requires
For the overloads in namespace \tcode{std},
the type of \tcode{*first} shall meet
-the \oldconcept{Move\-Constructible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{Move\-Constructible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -7688,8 +7689,8 @@
\tcode{RandomAccessIterator} shall meet
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
the type of \tcode{*first} shall meet
-the \oldconcept{MoveConst\-ruct\-ible} (\tref{moveconstructible}) and
-\oldconcept{MoveAssignable} (\tref{moveassignable}) requirements.
+the \oldconcept{MoveConst\-ruct\-ible} (\tref{cpp17.moveconstructible}) and
+\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
\pnum
\effects
@@ -7848,7 +7849,7 @@
\pnum
\requires
For the first form, type \tcode{T} shall be
-\oldconcept{LessThanComparable} (\tref{lessthancomparable}).
+\oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}).
\pnum
\returns
@@ -7925,7 +7926,7 @@
\pnum
\requires
For the first form, type \tcode{T} shall be
-\oldconcept{LessThanComparable} (\tref{lessthancomparable}).
+\oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}).
\pnum
\returns
@@ -8004,7 +8005,7 @@
\pnum
\requires
For the first form, type \tcode{T} shall be
-\oldconcept{LessThanComparable} (\tref{lessthancomparable}).
+\oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}).
\pnum
\returns
@@ -8200,7 +8201,7 @@
\tcode{\{m, M\}}, where \tcode{m} is
the first iterator in \range{first}{last} such that no iterator in the range refers
to a smaller element, and where \tcode{M} is the last iterator\footnote{This behavior
-intentionally differs from \tcode{max_element()}.}
+intentionally differs from \tcode{max_element}.}
in \range{first}{last} such that no iterator in the range refers to a larger element.
\pnum
@@ -8225,7 +8226,7 @@
\requires
The value of \tcode{lo} shall be no greater than \tcode{hi}.
For the first form, type \tcode{T}
-shall be \oldconcept{LessThan\-Comparable} (\tref{lessthancomparable}).
+shall be \oldconcept{LessThan\-Comparable} (\tref{cpp17.lessthancomparable}).
\pnum
\returns
@@ -8802,9 +8803,9 @@
\begin{itemdescr}
\pnum
\requires
-\tcode{T} shall satisfy
-the \oldconcept{CopyConstructible} (\tref{copyconstructible})
-and \oldconcept{CopyAssignable} (\tref{copyassignable}) requirements.
+\tcode{T} shall meet
+the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible})
+and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
In the range \crange{first}{last},
\tcode{binary_op} shall neither modify elements
nor invalidate iterators or subranges.%
@@ -8906,7 +8907,7 @@
\requires
\begin{itemize}
\item
- \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{moveconstructible}).
+ \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}).
\item
All of \tcode{binary_op(init, *first)}, \tcode{binary_op(*first, init)},
\tcode{binary_op(init, init)}, and \tcode{binary_op(*first, *first)}
@@ -8953,9 +8954,9 @@
\begin{itemdescr}
\pnum
\requires
-\tcode{T} shall satisfy
-the \oldconcept{CopyConstructible} (\tref{copyconstructible})
-and \oldconcept{CopyAssignable} (\tref{copyassignable}) requirements.
+\tcode{T} shall meet
+the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible})
+and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
In the ranges \crange{first1}{last1} and
\crange{first2}{first2 + (last1 - first1)}
\tcode{binary_op1} and \tcode{binary_op2}
@@ -9037,7 +9038,7 @@
\requires
\begin{itemize}
\item
- \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{moveconstructible}).
+ \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}).
\item
All of
\begin{itemize}
@@ -9085,7 +9086,7 @@
\requires
\begin{itemize}
\item
- \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{moveconstructible}).
+ \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}).
\item
All of
\begin{itemize}
@@ -9223,7 +9224,7 @@
\requires
\begin{itemize}
\item
- \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{moveconstructible}).
+ \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}).
\item
All of
\tcode{binary_op(init, init)},
@@ -9326,7 +9327,7 @@
\begin{itemize}
\item
If \tcode{init} is provided,
- \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{moveconstructible});
+ \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible});
otherwise, \tcode{ForwardIterator1}'s value type
shall be \oldconcept{MoveConstructible}.
\item
@@ -9401,7 +9402,7 @@
\requires
\begin{itemize}
\item
- \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{moveconstructible}).
+ \tcode{T} shall be \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}).
\item
All of
\begin{itemize}
@@ -9489,7 +9490,7 @@
\begin{itemize}
\item
If \tcode{init} is provided, \tcode{T} shall be
- \oldconcept{MoveConstructible} (\tref{moveconstructible});
+ \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible});
otherwise, \tcode{ForwardIterator1}'s value type shall be
\oldconcept{MoveConstructible}.
\item
@@ -9582,7 +9583,7 @@
\begin{itemize}
\item
For the overloads with no \tcode{ExecutionPolicy},
- \tcode{T} shall be \oldconcept{MoveAssignable} (\tref{moveassignable}) and
+ \tcode{T} shall be \oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) and
shall be constructible from the type of \tcode{*first}.
\tcode{acc} (defined below) shall be
writable\iref{iterator.requirements.general}
@@ -9814,7 +9815,7 @@
\pnum
\throws
-Any exception thrown by \tcode{compar()}\iref{res.on.exception.handling}.
+Any exception thrown by \tcode{compar}\iref{res.on.exception.handling}.
\end{itemdescr}
\xref
diff --git a/source/atomics.tex b/source/atomics.tex
index 51a8c0668c..dd0a8aba40 100644
--- a/source/atomics.tex
+++ b/source/atomics.tex
@@ -9,25 +9,17 @@
\pnum
The following subclauses describe atomics requirements and components for types
-and operations, as summarized below.
-
-\begin{libsumtab}{Atomics library summary}{tab:atomics.lib.summary}
-\ref{atomics.alias} & Type aliases &
- \\ \rowsep
-\ref{atomics.order} & Order and consistency &
- \\ \rowsep
-\ref{atomics.lockfree} & Lock-free property &
- \\ \rowsep
-\ref{atomics.ref.generic} & Class template \tcode{atomic_ref} & \tcode{}
- \\ \rowsep
-\ref{atomics.types.generic} & Class template \tcode{atomic} & \tcode{}
- \\ \rowsep
-\ref{atomics.nonmembers} & Non-member functions & \tcode{}
- \\ \rowsep
-\ref{atomics.flag} & Flag type and operations & \tcode{}
- \\ \rowsep
-\ref{atomics.fences} & Fences & \tcode{}
- \\ \rowsep
+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.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 & \\
\end{libsumtab}
\rSec1[atomics.syn]{Header \tcode{} synopsis}
@@ -1008,7 +1000,7 @@
\pnum
The following operations perform arithmetic computations.
The key, operator, and computation correspondence is identified
-in \tref{atomic.arithmetic.computations}.
+in \tref{atomic.types.int.comp}.
\indexlibrarymember{fetch_add}{atomic_ref<\placeholder{integral}>}%
\indexlibrarymember{fetch_and}{atomic_ref<\placeholder{integral}>}%
@@ -1122,7 +1114,7 @@
\pnum
The following operations perform arithmetic computations.
The key, operator, and computation correspondence are identified
-in \tref{atomic.arithmetic.computations}.
+in \tref{atomic.types.int.comp}.
\indexlibrarymember{fetch_add}{atomic_ref<\placeholder{floating-point}>}%
\indexlibrarymember{fetch_sub}{atomic_ref<\placeholder{floating-point}>}%
@@ -1221,7 +1213,7 @@
\pnum
The following operations perform arithmetic computations.
The key, operator, and computation correspondence is identified
-in \tref{atomic.pointer.computations}.
+in \tref{atomic.types.pointer.comp}.
\indexlibrarymember{fetch_add}{atomic_ref}%
\indexlibrarymember{fetch_sub}{atomic_ref}%
@@ -1725,7 +1717,7 @@
\begin{note}
For a union with bits that participate in the value representation
of some members but not others, compare-and-exchange might always fail.
-This is because such padding bits have an indeteminate value when they
+This is because such padding bits have an indeterminate value when they
do not participate in the value representation of the active member.
As a consequence, the following code is not guaranteed to ever succeed:
\begin{codeblock}
@@ -1857,7 +1849,7 @@
The following operations perform arithmetic computations. The key, operator, and computation correspondence is:
\begin{floattable}
-{Atomic arithmetic computations}{tab:atomic.arithmetic.computations}{lll|lll}
+{Atomic arithmetic computations}{atomic.types.int.comp}{lll|lll}
\hline
\hdstyle{\tcode{\placeholder{key}}} &
\hdstyle{Op} &
@@ -2028,7 +2020,7 @@
\pnum
The following operations perform arithmetic addition and subtraction computations.
The key, operator, and computation correspondence are identified in
-\tref{atomic.arithmetic.computations}.
+\tref{atomic.types.int.comp}.
\indexlibrary{\idxcode{atomic_fetch_add}}%
\indexlibrary{\idxcode{atomic_fetch_sub}}%
@@ -2166,7 +2158,7 @@
and computation correspondence is:
\begin{floattable}
-{Atomic pointer computations}{tab:atomic.pointer.computations}{lll|lll}
+{Atomic pointer computations}{atomic.types.pointer.comp}{lll|lll}
\hline
\tcode{Key} &
Op &
diff --git a/source/basic.tex b/source/basic.tex
index a7e73e817a..dac414469e 100644
--- a/source/basic.tex
+++ b/source/basic.tex
@@ -297,7 +297,7 @@
\tcode{e1 . \opt{template} e2}
naming a non-static data member,
the set contains the potential results of \tcode{e1}.
-\item if \tcode{e} is a class member access expression
+\item If \tcode{e} is a class member access expression
naming a static data member,
the set contains the \grammarterm{id-expression} designating the data member.
\item If \tcode{e} is a pointer-to-member
@@ -941,8 +941,17 @@
\tcode{for}, or \tcode{switch} statement (including the controlled
statement), and shall not be redeclared in a subsequent condition of
that statement nor in the outermost block (or, for the \tcode{if}
-statement, any of the outermost blocks) of the controlled statement;
-see~\ref{stmt.select}.
+statement, any of the outermost blocks) of the controlled statement.
+\begin{example}
+\begin{codeblock}
+if (int x = f()) {
+ int x; // ill-formed, redeclaration of \tcode{x}
+}
+else {
+ int x; // ill-formed, redeclaration of \tcode{x}
+}
+\end{codeblock}
+\end{example}
\rSec2[basic.scope.param]{Function parameter scope}
@@ -2343,11 +2352,13 @@
described in~\ref{basic.lookup.qual}, but ignoring any non-type names
that have been declared. If the name lookup does not find a previously
declared \grammarterm{type-name}, the \grammarterm{elaborated-type-specifier}
-is ill-formed. \begin{example}
+is ill-formed.
+\pnum
+\begin{example}
\begin{codeblock}
struct Node {
- struct Node* Next; // OK: Refers to \tcode{Node} at global scope
+ struct Node* Next; // OK: Refers to injected-class-name \tcode{Node}
struct Data* Data; // OK: Declares type \tcode{Data} at global scope and member \tcode{Data}
};
@@ -3148,7 +3159,7 @@
Otherwise, such
a pointer refers to allocated
storage\iref{basic.stc.dynamic.allocation}, and using the pointer as
-if the pointer were of type \tcode{void*}, is
+if the pointer were of type \tcode{void*} is
well-defined. Indirection through such a pointer is permitted but the resulting lvalue may only be used in
limited ways, as described below. The
program has undefined behavior if:
@@ -4568,7 +4579,7 @@
the largest value of the corresponding unsigned type.
\end{example}
-\begin{floattable}{Minimum width}{tab:width}{ll}
+\begin{floattable}{Minimum width}{basic.fundamental.width}{ll}
\topline
\lhdr{Type} & \rhdr{Minimum width $N$} \\
\capsep
@@ -4581,7 +4592,7 @@
\pnum
The width of each signed integer type
-shall not be less than the values specified in \tref{width}.
+shall not be less than the values specified in \tref{basic.fundamental.width}.
The value representation of a signed or unsigned integer type
comprises $N$ bits, where N is the respective width.
Each set of values for any padding bits\iref{basic.types}
@@ -4825,8 +4836,8 @@
\pnum
These methods of constructing types can be applied recursively;
-restrictions are mentioned in~\ref{dcl.ptr}, \ref{dcl.array},
-\ref{dcl.fct}, and~\ref{dcl.ref}. Constructing a type such that the number of
+restrictions are mentioned in~\ref{dcl.meaning}.
+Constructing a type such that the number of
bytes in its object representation exceeds the maximum value representable in
the type \tcode{std::size_t}\iref{support.types} is ill-formed.
@@ -4985,10 +4996,10 @@
\pnum
There is a partial ordering on cv-qualifiers, so that a type can be
said to be \defn{more cv-qualified} than another.
-\tref{relations.on.const.and.volatile} shows the relations that
+\tref{basic.type.qualifier.rel} shows the relations that
constitute this ordering.
-\begin{floattable}{Relations on \tcode{const} and \tcode{volatile}}{tab:relations.on.const.and.volatile}
+\begin{floattable}{Relations on \tcode{const} and \tcode{volatile}}{basic.type.qualifier.rel}
{ccc}
\topline
\cvqual{no cv-qualifier} &<& \tcode{const} \\
@@ -6059,7 +6070,7 @@
\defnx{Constant initialization}{constant initialization} is performed
if a variable or temporary object with static or thread storage duration
is initialized by a constant initializer\iref{expr.const} for the entity.
-\indextext{initialization!runtime}%
+\indextext{initialization!zero-initialization}%
If constant initialization is not performed, a variable with static
storage duration\iref{basic.stc.static} or thread storage
duration\iref{basic.stc.thread} is zero-initialized\iref{dcl.init}.
diff --git a/source/classes.tex b/source/classes.tex
index 41d1654433..0b9e26bccf 100644
--- a/source/classes.tex
+++ b/source/classes.tex
@@ -476,7 +476,7 @@
\begin{bnf}
\nontermdef{pure-specifier}\br
- \terminal{= 0}
+ \terminal{=} \terminal{0}
\end{bnf}
\pnum
@@ -3533,7 +3533,7 @@
\begin{importgraphic}
{Directed acyclic graph}
-{fig:dag}
+{class.dag}
{figdag.pdf}
\end{importgraphic}
\end{note}
@@ -3629,11 +3629,11 @@
corresponds one-to-one with a distinct \tcode{L} subobject within the
object of type \tcode{C}. Given the class \tcode{C} defined above, an
object of class \tcode{C} will have two subobjects of class \tcode{L} as
-shown in Figure~\ref{fig:nonvirt}.
+shown in \fref{class.nonvirt}.
\begin{importgraphic}
{Non-virtual base}
-{fig:nonvirt}
+{class.nonvirt}
{fignonvirt.pdf}
\end{importgraphic}
@@ -3659,14 +3659,14 @@
\end{codeblock}
\begin{importgraphic}
{Virtual base}
-{fig:virt}
+{class.virt}
{figvirt.pdf}
\end{importgraphic}
For an object \tcode{c} of class type \tcode{C}, a single subobject of
type \tcode{V} is shared by every base class subobject of \tcode{c} that has a
\tcode{virtual} base class of type \tcode{V}. Given the class \tcode{C}
defined above, an object of class \tcode{C} will have one subobject of
-class \tcode{V}, as shown in Figure~\ref{fig:virt}.
+class \tcode{V}, as shown in \fref{class.virt}.
\indextext{DAG!multiple inheritance}%
\indextext{DAG!virtual base class}%
\end{note}
@@ -3690,14 +3690,14 @@
\tcode{B} subobject within the object of type \tcode{AA}. Given the
class \tcode{AA} defined above, class \tcode{AA} has two subobjects of
class \tcode{B}: \tcode{Z}'s \tcode{B} and the virtual \tcode{B} shared
-by \tcode{X} and \tcode{Y}, as shown in Figure~\ref{fig:virtnonvirt}.
+by \tcode{X} and \tcode{Y}, as shown in \fref{class.virtnonvirt}.
\indextext{DAG!virtual base class}%
\indextext{DAG!non-virtual base class}%
\indextext{DAG!multiple inheritance}%
\begin{importgraphic}
{Virtual and non-virtual base}
-{fig:virtnonvirt}
+{class.virtnonvirt}
{figvirtnonvirt.pdf}
\end{importgraphic}
\end{note}
@@ -4396,7 +4396,7 @@
\begin{importgraphic}
{Name lookup}
-{fig:name}
+{class.lookup}
{figname.pdf}
\end{importgraphic}
diff --git a/source/compatibility.tex b/source/compatibility.tex
index 33e70c15ed..bdcd591c17 100644
--- a/source/compatibility.tex
+++ b/source/compatibility.tex
@@ -898,7 +898,7 @@
\change New keywords.
\rationale Required for new features.
\effect
-Added to \tref{keywords}, the following identifiers are new keywords:
+Added to \tref{lex.key}, the following identifiers are new keywords:
\tcode{alignas},
\tcode{alignof},
\tcode{char16_t},
diff --git a/source/concepts.tex b/source/concepts.tex
index 18763fc951..a2969a1163 100644
--- a/source/concepts.tex
+++ b/source/concepts.tex
@@ -12,9 +12,9 @@
\pnum
The following subclauses describe language-related concepts, comparison
concepts, object concepts, and callable concepts as summarized in
-\tref{concepts.lib.summary}.
+\tref{concepts.summary}.
-\begin{libsumtab}{Fundamental concepts library summary}{tab:concepts.lib.summary}
+\begin{libsumtab}{Fundamental concepts library summary}{concepts.summary}
\ref{concepts.equality} & Equality preservation & \\ \hline
\ref{concepts.lang} & Language-related concepts & \tcode{} \\
\ref{concepts.compare} & Comparison concepts & \\
@@ -134,8 +134,9 @@
};
\end{codeblock}
-\tcode{T} fails to meet the implicit requirements of \tcode{C}, so \tcode{C}
-is not satisfied. Since implementations are not required to validate the syntax
+\tcode{T} fails to meet the implicit requirements of \tcode{C},
+so \tcode{T} satisfies but does not model \tcode{C}.
+Since implementations are not required to validate the syntax
of implicit requirements, it is unspecified whether an implementation diagnoses
as ill-formed a program that requires \tcode{C}.
\end{example}
@@ -332,9 +333,11 @@
return f();
}
\end{codeblock}
+for some types \tcode{From} and \tcode{To},
and let \tcode{f} be a function with no arguments and return type \tcode{From}
such that \tcode{f()} is equality-preserving.
-\tcode{\libconcept{ConvertibleTo}} is satisfied only if:
+\tcode{From} and \tcode{To} model \tcode{\libconcept{ConvertibleTo}}
+only if:
\begin{itemize}
\item
@@ -366,7 +369,7 @@
\tcode{\libconcept{ConvertibleTo}}
and
\tcode{\libconcept{ConvertibleTo}}
-are satisfied, then \tcode{T} and \tcode{U} share a
+are modeled, then \tcode{T} and \tcode{U} share a
\term{common reference type}, \tcode{C}.
\begin{note}
\tcode{C} could be the same as \tcode{T}, or \tcode{U}, or it could be a
@@ -478,13 +481,13 @@
\begin{itemdescr}
\pnum
\begin{note}
-\tcode{\libconcept{SignedIntegral}} can be satisfied even by types that are
+\libconcept{SignedIntegral} can be modeled even by types that are
not signed integral types\iref{basic.fundamental}; for example, \tcode{char}.
\end{note}
\pnum
\begin{note}
-\tcode{\libconcept{UnsignedIntegral}} can be satisfied even by types that are
+\libconcept{UnsignedIntegral} can be modeled even by types that are
not unsigned integral types\iref{basic.fundamental}; for example, \tcode{bool}.
\end{note}
\end{itemdescr}
@@ -512,7 +515,8 @@
\tcode{RHS}, and
\item \tcode{rcopy} be a distinct object that is equal to \tcode{rhs}.
\end{itemize}
-\tcode{\libconcept{Assignable}} is satisfied only if
+\tcode{LHS} and \tcode{RHS} model
+\tcode{\libconcept{Assignable}} only if
\begin{itemize}
\item \tcode{addressof(lhs = rhs) == addressof(lcopy)}.
@@ -578,12 +582,10 @@
\tcode{S} is \tcode{(void)swap(E1, E2)}\footnote{The name \tcode{swap} is used
here unqualified.} if \tcode{E1} or \tcode{E2}
has class or enumeration type\iref{basic.compound} and that expression is valid, with
- overload resolution performed in a context that includes the declarations
+ overload resolution performed in a context that includes the declaration
\begin{codeblock}
template
void swap(T&, T&) = delete;
- template
- void swap(T(&)[N], T(&)[N]) = delete;
\end{codeblock}
and does not include a declaration of \tcode{ranges::swap}.
If the function selected by overload resolution does not
@@ -722,7 +724,7 @@
\begin{itemdescr}
\pnum
\begin{note}
-Unlike the \oldconcept{Destructible} requirements~(\tref{destructible}), this
+Unlike the \oldconcept{Destructible} requirements~(\tref{cpp17.destructible}), this
concept forbids destructors that are potentially throwing, even if a particular
invocation of the destructor does not actually throw.
\end{note}
@@ -760,7 +762,7 @@
\pnum
If \tcode{T} is an object type, then let \tcode{rv} be an rvalue of type
\tcode{T} and \tcode{u2} a distinct object of type \tcode{T} equal to
-\tcode{rv}. \tcode{\libconcept{MoveConstructible}} is satisfied only if
+\tcode{rv}. \tcode{T} models \libconcept{MoveConstructible} only if
\begin{itemize}
\item After the definition \tcode{T u = rv;}, \tcode{u} is equal to \tcode{u2}.
@@ -788,7 +790,7 @@
\pnum
If \tcode{T} is an object type, then let \tcode{v} be an lvalue of type
(possibly \tcode{const}) \tcode{T} or an rvalue of type \tcode{const T}.
-\tcode{\libconcept{CopyConstructible}} is satisfied only if
+\tcode{T} models \libconcept{CopyConstructible} only if
\begin{itemize}
\item After the definition \tcode{T u = v;}, \tcode{u} is equal to \tcode{v}.
@@ -819,7 +821,7 @@
Movable> && // (see \ref{concepts.object})
requires(const remove_reference_t& b1,
const remove_reference_t& b2, const bool a) {
- requires ConvertibleTo&, bool>;
+ { b1 } -> ConvertibleTo;
{ !b1 } -> ConvertibleTo;
{ b1 && a } -> Same;
{ b1 || a } -> Same;
@@ -837,9 +839,9 @@
\end{itemdecl}
\pnum
-Let \tcode{b1} and \tcode{b2} be lvalues of type
-\tcode{const remove_reference_t}.
-\tcode{\libconcept{Boolean}} is satisfied only if
+For some type \tcode{B}, let \tcode{b1} and \tcode{b2} be
+lvalues of type \tcode{const remove_reference_t}.
+\tcode{B} models \libconcept{Boolean} only if
\begin{itemize}
\item \tcode{bool(b1) == !bool(!b1)}.
@@ -883,11 +885,12 @@
\begin{itemdescr}
\pnum
-Let \tcode{t} and \tcode{u} be lvalues of types
+For some types \tcode{T} and \tcode{U},
+let \tcode{t} and \tcode{u} be lvalues of types
\tcode{const remove_reference_t} and
\tcode{const remove_reference_t} respectively.
-\tcode{\placeholder{weakly-equality-comparable-with}}
-is satisfied only if:
+\tcode{T} and \tcode{U} model
+\tcode{\placeholder{weakly-equality-comparable-with}} only if
\begin{itemize}
\item \tcode{t == u}, \tcode{u == t}, \tcode{t != u}, and \tcode{u != t}
have the same domain.
@@ -906,7 +909,7 @@
\begin{itemdescr}
\pnum
Let \tcode{a} and \tcode{b} be objects of type \tcode{T}.
-\tcode{\libconcept{EqualityComparable}} is satisfied only if
+\tcode{T} models \libconcept{EqualityComparable} only if
\tcode{bool(a == b)} is \tcode{true} when \tcode{a} is equal to
\tcode{b}\iref{concepts.equality}, and \tcode{false} otherwise.
@@ -932,13 +935,15 @@
\begin{itemdescr}
\pnum
-Let \tcode{t} be an lvalue of type \tcode{const remove_reference_t},
+For some types \tcode{T} and \tcode{U},
+let \tcode{t} be an lvalue of type \tcode{const remove_reference_t},
\tcode{u} be an lvalue of type \tcode{const remove_reference_t},
and \tcode{C} be:
\begin{codeblock}
common_reference_t&, const remove_reference_t&>
\end{codeblock}
-\tcode{\libconcept{EqualityComparableWith}} is satisfied only if
+\tcode{T} and \tcode{U} model
+\tcode{\libconcept{EqualityComparableWith}} only if
\tcode{bool(t == u) == bool(C(t) == C(u))}.
\end{itemdescr}
@@ -960,9 +965,9 @@
\begin{itemdescr}
\pnum
-Let \tcode{a}, \tcode{b}, and \tcode{c} be lvalues of type
-\tcode{const remove_reference_t}.
-\tcode{\libconcept{StrictTotallyOrdered}} is satisfied only if
+For some type \tcode{T}, let \tcode{a}, \tcode{b}, and \tcode{c} be
+lvalues of type \tcode{const remove_reference_t}.
+\tcode{T} models \libconcept{StrictTotallyOrdered} only if
\begin{itemize}
\item Exactly one of \tcode{bool(a < b)}, \tcode{bool(a > b)}, or
@@ -1001,13 +1006,15 @@
\begin{itemdescr}
\pnum
-Let \tcode{t} be an lvalue of type \tcode{const remove_reference_t},
+For some types \tcode{T} and \tcode{U},
+let \tcode{t} be an lvalue of type \tcode{const remove_reference_t},
\tcode{u} be an lvalue of type \tcode{const remove_reference_t},
and \tcode{C} be:
\begin{codeblock}
common_reference_t&, const remove_reference_t&>
\end{codeblock}
-\tcode{\libconcept{StrictTotallyOrderedWith}} is satisfied only if
+\tcode{T} and \tcode{U} model
+\tcode{\libconcept{StrictTotallyOrderedWith}} only if
\begin{itemize}
\item \tcode{bool(t < u) == bool(C(t) < C(u)).}
@@ -1045,14 +1052,14 @@
\begin{itemdescr}
\pnum
\begin{note}
-The \libconcept{Semiregular} concept is satisfied by types that behave similarly
+The \libconcept{Semiregular} concept is modeled by types that behave similarly
to built-in types like \tcode{int}, except that they might not
be comparable with \tcode{==}.
\end{note}
\pnum
\begin{note}
-The \libconcept{Regular} concept is satisfied by types that behave similarly to
+The \libconcept{Regular} concept is modeled by types that behave similarly to
built-in types like \tcode{int} and that are comparable with
\tcode{==}.
\end{note}
@@ -1084,7 +1091,7 @@
\begin{itemdescr}
\pnum
\begin{example}
-A function that generates random numbers can satisfy \libconcept{Invocable},
+A function that generates random numbers can model \libconcept{Invocable},
since the \tcode{invoke} function call expression is not required to be
equality-preserving\iref{concepts.equality}.
\end{example}
@@ -1110,8 +1117,7 @@
\pnum
\begin{example}
-A random number generator does not satisfy
-\libconcept{RegularInvocable}.
+A random number generator does not model \libconcept{RegularInvocable}.
\end{example}
\pnum
@@ -1149,7 +1155,7 @@
\begin{itemdescr}
\pnum
-A \libconcept{Relation} satisfies \libconcept{StrictWeakOrder} only if
+A \libconcept{Relation} models \libconcept{StrictWeakOrder} only if
it imposes a \term{strict weak ordering} on its arguments.
\pnum
diff --git a/source/config.tex b/source/config.tex
index 54017e5254..75dc7ebf33 100644
--- a/source/config.tex
+++ b/source/config.tex
@@ -1,8 +1,8 @@
%!TEX root = std.tex
%%--------------------------------------------------
%% Version numbers
-\newcommand{\docno}{N4810}
-\newcommand{\prevdocno}{N4800}
+\newcommand{\docno}{N4820}
+\newcommand{\prevdocno}{N4810}
\newcommand{\cppver}{201703L}
%% Release date
diff --git a/source/containers.tex b/source/containers.tex
index bfceedb1e9..df227bfcd6 100644
--- a/source/containers.tex
+++ b/source/containers.tex
@@ -14,22 +14,20 @@
sequence containers and
associative containers,
as summarized in
-\tref{containers.lib.summary}.
+\tref{containers.summary}.
-\begin{libsumtab}{Containers library summary}{tab:containers.lib.summary}
+\begin{libsumtab}{Containers library summary}{containers.summary}
\ref{container.requirements} & Requirements & \\ \rowsep
-\ref{sequences} & Sequence containers & \tcode{} \\
- & & \tcode{} \\
- & & \tcode{} \\
- & & \tcode{} \\
- & & \tcode{} \\ \rowsep
-\ref{associative} & Associative containers & \tcode{