diff --git a/papers/n4829.html b/papers/n4829.html
new file mode 100644
index 0000000000..6c821330f4
--- /dev/null
+++ b/papers/n4829.html
@@ -0,0 +1,1279 @@
+
N4829
+N4829 Editors' Report -- Programming Languages -- C++
+
+2019-08-15
+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
+
+Special thanks to several paper authors
+for supplying the LaTeX sources for their papers.
+
+Special thanks also to the Editing Committee --
+Daniel Krügler, Davis Herring, Nina Ranns, and Ville Voutilainen --
+for providing a careful review of the application of these motions
+and the editorial changes described below
+to ensure the correctness of the C++20 Committee Draft.
+
+Thanks to all those who have submitted editorial
+issues
+and to those who have provided pull requests with fixes.
+
+New papers
+
+
+- N4830 is the committee draft for C++20. It replaces N4820.
+- N4829 is this Editors' Report.
+
+
+Note:
+A working draft was circulated to the editing committee for review,
+and was mistakenly published with paper number N4828.
+N4828 is not the C++20 Committee Draft,
+and does not contain the results of addressing feedback from
+the editing committee.
+
+Motions incorporated into working draft
+
+Core working group motions
+
+CWG motion 1: Core issue resolutions for 10 issues in "tentatively ready" status applied: (DR)
+
+
+- 682 Missing description of lookup of template aliases
+- 2207 Alignment of allocation function return value
+- 2300 Lambdas in multiple definitions
+- 2366 Can default initialization be constant initialization?
+- 2376 Class template argument deduction with array declarator
+- 2390 Is the argument of
__has_cpp_attribute
macro-expanded?
+- 2400 Constexpr virtual functions and temporary objects
+- 2404
[[no_unique_address]]
and allocation order
+- 2406
[[fallthrough]]
attribute and iteration statements
+- 2418 Missing cases in definition of "usable in constant expressions"
+
+
+CWG motion 2: P1161R3 "Deprecate uses of the comma operator in subscripting expressions"
+
+CWG motion 3: P1331R2 "Permitting trivial default initialization in constexpr contexts"
+
+CWG motion 4: P0735R1 "Interaction of memory_order_consume
with release sequences"
+
+CWG motion 5: P0848R3 "Conditionally trivial special member functions"
+
+CWG motion 6: P1186R3 "When do you actually use <=>
?"
+
+CWG motion 7: P1301R4 "[[nodiscard("should have a reason")]]
"
+
+CWG motion 8: P1099R5 "using enum
"
+
+CWG motion 9: P1630R1 "Spaceship needs a tune-up"
+
+CWG motion 10: P1616R1 "Using unconstrained template template parameters with constrained templates"
+
+CWG motion 11: P1816R0 "Class template argument deduction for aggregates"
+
+CWG motion 12: P1668R1 "Enabling constexpr
intrinsics by permitting unevaluated inline assembly in constexpr
functions"
+
+CWG motion 13: P1766R1 "Mitigating minor modules maladies" (DR)
+
+CWG motion 14: P1811R0 "Relaxing redefinition restrictions for re-exportation robustness"
+
+CWG motion 15: P0388R4 "Permit conversions to arrays of unknown bound"
+
+CWG motion 16: P1823R0 "Remove contracts"
+
+CWG motion 17: P1143R2 "Adding the constinit
keyword"
+
+CWG motion 18: P1452R2 "On the non-uniform semantics of return-type-requirements"
+
+CWG motion 19: P1152R4 "Deprecating volatile
"
+
+CWG motion 20: P1771R1 "[[nodiscard]]
for constructors" (DR)
+
+CWG motion 21: P1814R0 "Class template argument deduction for alias templates"
+
+CWG motion 22 was withdrawn
+
+CWG motion 23: P1825R0 "Merged wording for P0527R1 and P1155R3" (DR)
+
+
+
+CWG motion 24: P1703R1 "Recognizing header unit imports requires full preprocessing"
+
+CWG motion 25: P0784R7 "More constexpr
containers"
+
+Library working group motions
+
+LWG motion 1: Library issue resolutions for 17 issues in "Ready" and "Tentatively Ready" status applied: (DR)
+
+
+- 3209 Expression in
year::ok()
returns clause is ill-formed
+- 3208
Boolean
's expression requirements are ordered inconsistently
+- 3206
year_month_day
conversion to sys_days
uses not-existing member function
+- 3202 P0318R1 was supposed to be revised
+- 3199
istream >> bitset<0>
fails
+- 3198 Bad constraint on
std::span::span()
+- 3196
std::optional<T>
is ill-formed if T
is an array
+- 3191
std::ranges::shuffle
synopsis does not match algorithm definition
+- 3187 P0591R4 reverted DR 2586 fixes to
scoped_allocator_adaptor::construct()
+- 3186 Ranges
remove
, partition
, and partial_sort_copy
algorithms discard useful information
+- 3185 Uses-allocator construction functions missing
constexpr
and noexcept
+- 3184 Inconsistencies in
bind_front
wording
+- 3183 Normative permission to specialize ranges variable templates
+- 3169 Ranges permutation generators discard useful information
+- 3158
tuple(allocator_arg_t, const Alloc&)
should be conditionally explicit
+- 3055
path::operator+=(
single-character)
misspecified
+- 2899
is_(nothrow_)move_constructible
and tuple
, optional
and unique_ptr
+
+
+LWG motion 2: P1355R2 "Exposing a narrow contract for ceil2
"
+
+LWG motion 3: P0553R4 "Bit operations"
+
+LWG motion 4: P1424R1 "constexpr
feature macro concerns"
+
+LWG motion 5: P0645R10 "Text formatting"
+
+LWG motion 6: P1361R2 "Integration of chrono with text formatting"
+
+LWG motion 7: P1652R1 "Printf corner cases in std::format
"
+
+LWG motion 8: P0631R8 "Math constants"
+
+LWG motion 9: Synchronization library:
+
+
+
+LWG motion 10: P1466R3 "Miscellaneous minor fixes for chrono"
+
+LWG motion 11: P1754R1 "Rename concepts to standard_case
for C++20, while we still can"
+
+LWG motion 12: P1614R2 "The mothership has landed"
+
+LWG motion 13: P0325R4 "to_array
from LFTS with updates"
+
+LWG motion 14: P0408R7 "Efficient access to basic_stringbuf
's buffer"
+
+LWG motion 15: P1423R3 "char8_t
backward compatibility remediation"
+
+LWG motion 16: P1502R1 "Standard library header units"
+
+LWG motion 17: P1612R1 "Relocate endian
's specification"
+
+LWG motion 18: P1661R1 "Remove dedicated precalculated hash lookup interface"
+
+LWG motion 19: P1650R0 "Output std::chrono::days
with d
suffix"
+
+LWG motion 20: P1651R0 "bind_front
should not unwrap reference_wrapper
"
+
+LWG motion 21: P1065R2 "Constexpr invoke
"
+
+LWG motion 22: P1207R4 "Movability of single-pass iterators"
+
+LWG motion 23: P1035R7 "Input range adaptors"
+
+LWG motion 24: P1638R1 "basic_istream_view::iterator
should not be copyable"
+
+LWG motion 25: P1522R1 "Iterator difference type and integer overflow"
+
+LWG motion 26: P1004R2 "Making std::vector
constexpr"
+
+LWG motion 27: P0980R1 "Making std::string
constexpr"
+
+LWG motion 28: P0660R10 "Stop token and joining thread"
+
+LWG motion 29: P1474R1 "Helpful pointers for ContiguousIterator
"
+
+LWG motion 30: P1523R1 "Views and size types"
+
+LWG motion 31: P0466R5 "Layout-compatibility and pointer-interconvertibility traits"
+
+LWG motion 32: P1208R6 "source_location
"
+
+Notable editorial changes
+
+CWG motion 21
+
+The changes for this motion in [over.match.class.deduct]
+described the matching of a simple-template-id against
+the defining-type-id of an alias template
+in imprecise terms
+(quoting only part of the grammar to which the change intended to apply).
+This has been made more precise by repeating the full grammar
+previously specified in [dcl.type.simple]
+in [over.match.class.deduct].
+
+LWG motions 5-7
+
+The new std::format
library underwent substantial editorial rework
+for clarity and precision.
+Thanks to Tomasz Kamiński and
+Johel Ernesto Guerrero Peña
+for reviewing the resulting edits,
+and to Victor Zverovich for responding to various questions about intent.
+
+LWG motion 10
+
+The operator<<
added for hh_mm_ss
was written in terms of
+the old chrono formatting machinery that was replaced by
+std::format
-based machinery by LWG motion 6.
+It has been rephrased in terms of std::format
.
+Thanks to Howard Hinnant for providing wording.
+
+LWG motion 11
+
+In addition to the requested renames, the following concepts were also renamed,
+following the editorial instructions to rename all other concepts:
+
+
+ThreeWayComparableWith
-> three_way_comparable_with
+ThreeWayComparable
-> three_way_comparable
+ForwardRange
-> forward_range
+
+
+LWG motion 14
+
+This motion requested that the same constructor be added to basic_stringbuf
+twice. It was only added once.
+
+LWG motion 23
+
+The wording paper proposed making changes to the algorithms
+
+
+std::ranges::sample
+std::ranges::shift_left
+std::ranges::shift_right
+
+
+However, these algorithms were never adopted into the C++ working draft from
+the Ranges Technical Specification, so after consulting with the Library
+Working Group, the requested changes to these algorithms were ignored.
+
+LWG motion 26, 27
+
+These motions would have added constexpr
to
+operator<
, operator>
, operator<=
, operator>=
, and operator!=
functions
+that LWG motion 12 removed.
+Instead constexpr
was added to the replacement operator<=>
.
+
+In addition, following the paper's request to add constexpr
to any
+std::basic_string
functions that the wording missed, and after consulting
+with the LWG chair as directed, the overloads of std::erase
and
+std::erase_if
for std::basic_string
were also marked contexpr
.
+
+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, the following section labels have been renamed:
+
+
+- [concept.convertibleto] => [concept.convertible]
+- [concept.derivedfrom] => [concept.derived]
+- [concept.stricttotallyordered] => [concept.totallyordered]
+
+
+Feature test macros
+
+Attention should be drawn to the fact that multiple papers updated feature test
+macros to the same version:
+
+
+__cpp_constexpr
was updated to 201907L
by both
+P1331R2 (CWG motion 3) and
+P1668R1 (CWG motion 12).
+__has_cpp_attribute(nodiscard)
was updated to 201907L
by both
+P1304R4 (CWG motion 7) and
+P1771R1 (CWG motion 20).
+
+
+Implementers should be aware that the new version of the feature test macro
+advertises support for both papers in these cases (in addition to advertising
+support for prior papers that gave smaller version numbers to the relevant
+macro).
+
+Minor editorial fixes
+
+A log of editorial fixes made to the working draft since N4820 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 44ea29778d15cd5d9f2b5c706c6b3f4338548ec2
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue Jun 25 06:04:14 2019 -0700
+
+ [range.filter.sentinel] Correct typo in constructor Effects (#2937)
+
+commit 97b615a5a6ab0598b624ee05402c531d0421cff6
+Author: Casey Carter <Casey@Carter.net>
+Date: Tue Jun 25 06:09:55 2019 -0700
+
+ [iterator.synopsis] Copy constraint for iterator_traits<T*> from [iterator.traits]/5 (#2943)
+
+commit da7eac5e621b5fab12c0b1992100c4bfd983ed8e
+Author: Saar Raz <saar@raz.email>
+Date: Mon Jul 1 22:46:37 2019 +0300
+
+ [Concepts] Remove qualified-concept-name reference
+
+ Update 'qualified-concept-name' (the previous incarnation of 'type-constraint') reference to 'type-constraint' in [temp.over.link]p6.
+
+commit f54f306c3b9fad27e70766963840e3df14f20b28
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Jul 4 15:34:38 2019 +0200
+
+ [func.bind] Remove bogus 'shall's. (#2955)
+
+commit 72cc844ef44ae47aebb1ad346146138d3279be9e
+Author: Eelis <github.com@contacts.eelis.net>
+Date: Fri Jul 5 16:16:58 2019 +0200
+
+ [expr.reinterpret.cast] Properly capitalize full-sentence bullets. (#2956)
+
+commit c635711cdd81346ad41c7861adb8035176fa236f
+Author: Eelis <github.com@contacts.eelis.net>
+Date: Fri Jul 5 23:55:22 2019 +0200
+
+ [temp.constr.constr] Add missing period at end of sentence. (#2957)
+
+commit 4f9942cafadc17fb902610b4c67afb6fcf81ff64
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sun Jul 7 19:38:20 2019 +0200
+
+ [dcl.asm] Rename grammar term 'asm-definition' to 'asm-declaration'
+
+commit 51c5b01217799fdfa754179c20af888ec8c1889d
+Author: Casey Carter <Casey@Carter.net>
+Date: Wed Jul 10 00:40:19 2019 -0700
+
+ [temp.constr.order] Remove extraneous "the". (#2964)
+
+commit 67db9422b6bc58f5399c7c019ec5ede28d8ac4f5
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jun 28 17:01:54 2019 +0200
+
+ [expr.prim.req] Fix cross-reference for substituting into constraints.
+
+commit 98c2c56ab5e945452586270d72d2fb606b71cd94
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Jul 22 02:24:42 2019 +0200
+
+ [class.prop] [special] Move definition of eligible special member
+ functions to the section on special member functions.
+
+commit 94a72b5c11a20cfd6c92a4faa5bd0df4b8ebc620
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Jul 22 02:28:15 2019 +0200
+
+ [class.dtor] Reorder the introduction of an implicit prospective
+ destructor to before we describe the overload resolution to pick the
+ actual destructor.
+
+commit 6bd3daeae3a3e9ae6174c35ab020dbfe4504b75b
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Thu Aug 1 20:04:36 2019 -0700
+
+ [class.ctor], [class.dtor] Introduce actual definitions for
+ "constructor" and "prospective destructor".
+
+commit dc45e8c329eeb0076d074fa671c2be2fc605555a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Jul 22 03:18:33 2019 +0200
+
+ [class.spaceship] Remove incorrect note.
+
+commit d6a291776858bc647fc6826888767284f305c799
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Jul 22 03:58:34 2019 +0200
+
+ [dcl.attr.nodiscard] Simplify note describing the string-literal in a
+ nodiscard attribute and make it less confusing.
+
+commit 46ba985402de963f50d364b26b594707be16c7c9
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Jul 22 04:42:43 2019 +0200
+
+ [dcl.enum] Avoid hanging paragraphs by moving "Enumeration declarations"
+ down one level to a sibling of "The using enum declaration".
+
+ [namespace.udir] Rename section to "Using namespace directive" to
+ further distinguish this from a using enum declaration.
+
+commit 5d1bb1c7f8ed44016c38bfeb9797e363d52cfc51
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Thu Aug 1 20:42:13 2019 -0700
+
+ [over.match.oper] Replace "member, non-member, and built-in candidates"
+ with "non-rewritten candidates"
+
+ This simplifies the wording, implicitly explains why we're considering
+ only some candidates, and avoids overtly suggesting that we could ever
+ pick a reversed-parameter-order built-in candidate.
+
+commit 1fbc1c315008152770eea8bd383aa2a4fa47cfd5
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jul 26 16:56:13 2019 +0200
+
+ [basic.def.odr] Turn long comma-separate list into bullets.
+
+commit c0c589881759871b2183105f315d4ddd0d2734be
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Aug 1 22:47:19 2019 +0200
+
+ [expr.const.cast] Clarify pairwise correspondence for P_i.
+ [over.ics.rank] Move cross-reference pointing to [conv.qual].
+
+commit 47539b965a84f69c548fe043a632af17db3cb315
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Aug 2 15:49:39 2019 -0700
+
+ [conv.qual] Move note after the rule that implies it.
+
+commit f10e3751b39138746b601fa702c9ed9e67777c96
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Aug 2 15:59:50 2019 -0700
+
+ [over.ics.rank] Reorder examples to match order of normative text.
+
+commit 813a4300a036f12d5ff6b82965b83a8e87b1ae8d
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Aug 2 16:55:56 2019 -0700
+
+ [dcl.attr.nodiscard] Fix vexing-parse bug in example. Make sure the
+ missiles actually get launched, not merely redeclared.
+
+commit 6e845457bfd83f20c2f61bf4015afcd96cbd0cec
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Aug 2 17:17:52 2019 -0700
+
+ [over.match.class.deduct] Fix failure to handle the case where a
+ deducible alias template's defining-type-id contains a
+ nested-name-specifier (or 'typename' or 'template' keywords).
+
+commit 7226ced32fe3cda28eb05f044985427684397128
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Aug 2 17:26:53 2019 -0700
+
+ [over.match.class.deduct] Switch from imperative to passive, and clarify
+ what happens if the various 'if' conditions are not met.
+
+commit 6552c03d3793e7532793097d760edc3a93e150b1
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Fri Aug 2 17:32:40 2019 -0700
+
+ [over.match.class.deduct] Put all bullets describing the properties of
+ f' at the same depth, and guard them all by the condition that we're
+ actually adding an f' to the set of guides.
+
+commit b3b7d37c073051826c21c231bd386c10d64433dc
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Aug 2 22:09:14 2019 +0200
+
+ [class.copy.elision] Add cross-reference, fix example.
+
+commit 4a657ca3e26850a993c2015bbecd6287e817a615
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 3 18:51:09 2019 -0700
+
+ [iterator.concept.sizedsentinel], [range.sized], [range.view]
+ Provide proper descriptions for disable_sized_sentinel,
+ disable_sized_range, and enable_view.
+
+commit 796c871f9b14a42fea634ec97a35032bfe3c422a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jul 23 09:57:04 2019 +0200
+
+ [bit] Avoid std::numeric_limits<...>
+
+ Referring to numeric_limits (without std:: prefix) is sufficient.
+
+commit fb97956bc9eee5a50c10df9148d9422e260e352c
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Jul 31 17:28:28 2019 -0700
+
+ [format.formatter] Add subclause heading to avoid hanging paragraphs.
+
+commit eae84a0a10b4409da01ae5c9e7c734e113973cdf
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Jul 31 17:34:37 2019 -0700
+
+ [format.string] Clarify that "other characters" means "characters other
+ than { and }".
+
+commit b62dc39c0541a1968ac1717773574f4ef868934c
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Jul 31 18:05:00 2019 -0700
+
+ [format.string] Change 'integer' grammar to be left-recursive and factor
+ out separate positive-integer and nonnegative-integer productions for
+ clarity.
+
+commit 2db4bd64f7f157266ae0f7c7c44c4fe7c68c6070
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Jul 31 18:14:56 2019 -0700
+
+ [format.string] Fix wording that talks about omitting arg-ids but
+ presupposes that they are all present to instead specify what happens
+ when some or all are absent.
+
+commit 5a32fd1040b8a7c4c997ba8841c4f28a34a6c97d
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Jul 31 18:26:41 2019 -0700
+
+ [format.string] Add missing grammar definition for custom-format-spec
+ rather than leaving it dangling.
+
+commit d529b96f3be22332d4a88de646f56cb636680f6c
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Jul 31 18:33:05 2019 -0700
+
+ [format.string] Make tone of wording more formal and less tutorialesque.
+
+commit 3ced91d524f3c2a850243863440151735276b38a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Jul 31 18:41:56 2019 -0700
+
+ [format.context] Add specification of wformat_context analogous to that
+ of format_context, as discussed on lib reflector.
+
+commit ed00761315546c11b48441e1bcef6aa5927f76c8
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Thu Aug 1 18:17:10 2019 -0700
+
+ [format.string] Explicitly list all the possible formatting types for
+ bool and charT in their respective tables rather than requiring the
+ reader to infer how to merge the integer table into the bool and charT
+ tables.
+
+commit 46622695da52f8080f7280207eecd93bd950cc1a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 3 19:57:13 2019 -0700
+
+ [format.functions] Use clamp rather than min(max(a,b),c)
+
+ Co-Authored-By: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
+
+commit a870403a2dc47924e7f607f7c69694291d43007c
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 3 20:39:06 2019 -0700
+
+ [format.arg] Don't use placeholder name for private member char-type.
+
+commit d17fd4d5f10f6af87654fdc73bd6417313a295f2
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 14:04:04 2019 -0700
+
+ [format.string] Avoid duplicating the specification of '#' for integers.
+
+ Fix the specification for '#' being different for octal integers in the
+ two places it's specified.
+
+commit e30b8a69d485b96ddacfa31b7eb411c5a64d83a5
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 14:23:48 2019 -0700
+
+ [format.string] Separate out the general (type-independent) description
+ of formatting from the format specifiers for arithmetic and string
+ types, and make the presentation of the latter consistent with the
+ presentation for chrono types.
+
+commit f430bec8e7a4437b69d1ad31b2c1f4246e753770
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 15:09:26 2019 -0700
+
+ [format.string.std] Convert normative duplication to a note to avoid
+ creating the impression that alignment is only applied to non-string
+ types.
+
+commit b6454e39ede7ab11ce0958fa2ee3b487c8983ae1
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 15:32:02 2019 -0700
+
+ [format.string] Further clarify description of cases where formatting is
+ described in terms of a call to to_chars.
+
+commit 895f30bd225d050bcb2ab9f0a793af9865dcd513
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 20:02:33 2019 -0700
+
+ [format.formatter] Reorder Formatter requirements before the
+ descriptions of specializations that meet those requirements.
+
+commit c7ada4d28ae7be82ef64104617e216fd738a4d0f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jul 30 16:07:16 2019 +0200
+
+ [numbers] Use 'template<class T>', not 'typename'.
+
+commit 14aa4ed0d323c163f0559bd7c8555d77f2dc8093
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jul 30 16:12:59 2019 +0200
+
+ [math.constants] Expand 'math' to 'mathematical'.
+
+commit 3f761c76b5daf9f1a75695226514c323ba6619f0
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Aug 1 10:50:09 2019 +0200
+
+ [numbers.syn] Use 'namespace std::numbers'.
+
+commit dc61857d3779253c6cdeec572cdcb43077b0ce86
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 20:51:47 2019 -0700
+
+ [atomics.lockfree] "are" -> "is"; "along with" is not a coordinating
+ conjunction.
+
+commit 3d3f16f99454d3ffffcfbf92a02b9bcaac9b375b
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 21:50:27 2019 -0700
+
+ [thread.barrier.class] Rename constructor parameter from `phase_count`
+ to `expected`.
+
+ The parameter is not a phase count, and is referred to by other
+ normative wording as `expected`; also, `expected` is the name we use for
+ the same parameter in the constructor of `latch`.
+
+commit 2e82327045fb92d89dd1431cc7e771da63c982dc
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Aug 1 10:37:25 2019 +0200
+
+ [time.hms.members] Rephrased note.
+ [time.hms.overview] Removed redundant declaration of operator<<.
+ [time.hms.overview] Moved exposition-only data members to the bottom.
+
+commit 1a37c22bb6b621f14d01b4e16378c9cd08724183
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sun Aug 4 23:36:25 2019 -0700
+
+ [time.hms.nonmembers] Finish rebase on std::format: rewrite hh_mm_ss
+ operator<< in terms of format rather than using (removed) old formatting
+ terminology.
+
+commit 584a87ec1d48862b9e68a269d0a5eb7b05d6999d
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 5 13:57:50 2019 -0700
+
+ [time.hms.nonmembers] Fix editorial error in hh_mm_ss operator<< (only
+ stream to 'os' once). This formulation was proposed by Howard Hinnant
+ on the lib reflector.
+
+commit d243672db3269754d4ee91a5fbcdfb82ae6f2539
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Jul 30 16:01:10 2019 +0200
+
+ Apply P1452R2 On the non-uniform semantics of return-type-requirements
+ to newly-introduced return type requirements.
+
+commit 90f64792ec7d5372a093d3bea69dffff2f7af28a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 5 13:48:59 2019 -0700
+
+ Rename _s to -s in placeholder names per editorial guidelines.
+
+commit ad685c42b18103ace094b375a4fde1a7ec6aba02
+Author: Dawn Perchik <dperchik@embarcadero.com>
+Date: Tue Jul 30 19:33:10 2019 -0700
+
+ [stringbuf] Name string parameters "s" instead of "str" for consistency and to avoid confusion with "str" methods.
+
+commit 26f7cd6d3b2d271c74e1d2022f972f833de940f6
+Author: Dawn Perchik <dperchik@embarcadero.com>
+Date: Thu Aug 1 13:35:42 2019 -0700
+
+ [stringbuf.members] Minor fixes to P0408R7 wording.
+
+ "str()" should be "str"; we're talking about all str member functions here.
+ Add comma after "For efficiency reasons".
+ "i.e." -> "e.g." since we're describing an example case.
+
+commit b4a8b798e00bce697af9b477a214828b69e9e383
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 5 17:31:21 2019 -0700
+
+ [module.unit] Add "either" to clarify that we're talking about
+ module-names containing a reserved identifier, not module names starting
+ with an identifier that contains a reserved identifier.
+
+commit 906fd4d0519994e06659ce066c8252df186c23b9
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 5 17:57:35 2019 -0700
+
+ [func.require] Convert restrictive 'which' to 'that'.
+
+commit 7e862f0f238257b2cbb1f7296a593b4587029e39
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 5 18:46:55 2019 -0700
+
+ [range.transform.sentinel] Reinstate transform_view::sentinel::operator-
+ overloads, accidentally removed during application of P1614R2.
+
+commit e02aa79ca43de3fdf6e1887d4fd02bc58874e190
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Wed Jul 31 22:55:50 2019 +0200
+
+ [range.istream.view] Do not repeat declaration of function istream_view
+ [range.elements.iterator] Renamed from [range.elements_view.iterator]
+ [range.elements.iterator] Use local typedef difference_type
+ [range.elements.iterator] Use reference return type for compound assignment
+
+commit a0b5a70fade22203ebfbaeb4828e0c304b1f62ab
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 5 23:02:38 2019 -0700
+
+ [ranges] Fix 'constexpr friend' to our preferred order 'friend constexpr'.
+
+commit f0256ab73cd6a9fae611af95526d16fe59968d4c
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 5 23:08:59 2019 -0700
+
+ [range.drop.view] Fix typo "requirement" -> "required".
+
+commit 7698c3dc28251540b4a4733cc4a6b3f6942f13ed
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 00:40:47 2019 -0700
+
+ [range.iota.view] Rename IOTA_DIFF_T to the preferred IOTA-DIFF-T.
+
+commit cf1bc270c0e7d7b1670502c69268b0373bbf9799
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 01:35:47 2019 -0700
+
+ [thread] Update headings, comments, and line wrapping to match editorial
+ conventions.
+
+commit 7f4e95e3296b31c23bfb358f31294d384a955e3b
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Aug 3 08:38:34 2019 +0200
+
+ [support.srcloc] Fix comments in example.
+
+commit 06ab7ebef8a763e36f87f504ed7765528aa25fc7
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 02:28:42 2019 -0700
+
+ [support.srcloc.cons] Use term "default member initialier" rather than
+ describing it indirectly.
+
+commit 7beed51f4388074f46fd55a7c5f559cd82b7c40c
+Author: Dawn Perchik <dperchik@embarcadero.com>
+Date: Tue Jul 30 20:36:34 2019 -0700
+
+ [alg.is.permutation] Add parameters to \libconcept{sized_sentinel_for} as suggested in PR #3099.
+
+commit fbb0691134e39059adaa4a886e7d746b0e56c81c
+Author: Dawn Perchik <dperchik@embarcadero.com>
+Date: Wed Jul 31 12:52:26 2019 -0700
+
+ [concepts] Renamed concepts' section names to remove trailing prepositions for consistency.
+
+ * concept.convertibleto => concept.convertible
+ * concept.derivedfrom => concept.derived
+ * concept.stricttotallyordered => concept.totallyordered
+
+commit e2a070f7a5484e272c10e4ab31359fede5ff24a1
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 13:51:24 2019 -0700
+
+ [diff.cpp17.library], [tab:headers.cpp] Add missing <coroutine> entry
+ to the list of headers, and add various missing entries to the list of
+ new-in-C++20 headers.
+
+ Fixes #3122.
+
+commit 54a87d7849e7d5283c2d0a34f8200ef6a67bb0da
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Aug 6 23:17:24 2019 +0200
+
+ [conv.qual,expr.static.cast] Harmonize notes on cv-qualified function types.
+
+commit ee234abfbfa7deb5c585b67590205e1660df180f
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Aug 1 16:45:51 2019 +0200
+
+ [time.clock,bit.cast] Replace template<typename...> with template<class...>
+
+ as per library specification policy.
+
+commit a374c4f3664cf84a4440feb3c236076b25cfe736
+Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+Date: Thu Jul 25 21:24:06 2019 +0200
+
+ [tuple] Use "objects" instead of "variables"
+ with "temporary" in the definition of `forward_as_tuple`
+
+commit 7e02aa3d7d3e5e9dfc2c66451e112d40f4491465
+Author: Jonathan Wakely <cxx@kayari.org>
+Date: Mon Jul 22 23:27:57 2019 +0100
+
+ [is.sorted] Add missing "return" and semi-colon
+
+ This was lost when changing "Returns:" to "Effects:" for P0896R4. The
+ paper included this change, but it was lost when applying it.
+
+commit cc421307fb4ce393e7ab1dcf0d0f1298d163fbe0
+Author: Yehezkel Bernat <yehezkelshb@gmail.com>
+Date: Sun Jul 21 22:16:23 2019 +0300
+
+ Delete irrelevant copy-paste from previous section
+
+commit d4c4cc0ac037c51ec10cf6f7c80d8c761b517cba
+Author: onihusube <44743040+onihusube@users.noreply.github.com>
+Date: Wed Jul 17 22:46:24 2019 +0900
+
+ [basic.lookup.argdep]/5 add export to apply()
+
+ fix #2968
+
+commit 557cfa9dd706780fb672bfe9e5e2f0ef3b2f3d4a
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Jul 4 09:31:57 2019 +0200
+
+ [basic.life] Lifetime of class objects is treated uniformly
+ under CWG2256, regardless of triviality of the destructor.
+
+commit 4c3b9f50ecd230263974c81e1df2fb07b541c58d
+Author: onihusube <44743040+onihusube@users.noreply.github.com>
+Date: Mon Jul 1 16:26:16 2019 +0900
+
+ [module.global] fix sample code comment
+
+commit 06bd4b02febcb43c014ffd46b7a07dab8d66aa4b
+Author: onihusube <44743040+onihusube@users.noreply.github.com>
+Date: Mon Jul 1 16:41:33 2019 +0900
+
+ [cpp.module] fix sample code comment
+
+commit 1be069efaa41f4df376364290f8069ec030b13cc
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jun 28 17:11:44 2019 +0200
+
+ [time.parse] Fix description of %Ex and %EX parse flags.
+
+ Also refer to the table number instead of 'the table below'.
+
+commit f038d86fb9112b62adaaebaf95dc70d786412cbd
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Fri Jun 28 16:50:03 2019 +0200
+
+ [res.on.functions] Properly capitalize full-sentence bullets.
+
+ Also add periods at the end of sentences.
+
+commit 43945886b4ff4481da3d29b3f624d55bc9b5d124
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Mon Jun 24 22:43:30 2019 +0200
+
+ [conv.qual] Fix example for cv-decomposition.
+
+ After CWG2051, a cv-decomposition can also be a no-op.
+
+commit 915031ddbf75f856efcea43928d9f459140834fd
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Tue Aug 6 09:31:52 2019 +0200
+
+ [meta.trans.other] Use hyphens, not underscores, for meta-functions.
+
+commit be443affbf06bfb14c2295311ed469896ae39d6c
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 7 17:59:27 2019 -0700
+
+ [range.drop.while.overview] Add missing space in example.
+
+commit 1e09011ff3627db60ae10fa8fee2e2f5ef7dc5c9
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 18:13:55 2019 -0700
+
+ [format.string.general] indexes -> indices
+
+commit 71251ae592a49149faec1389ec85f22322aa0ba5
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 18:23:43 2019 -0700
+
+ [format.string.std] Fix space collapse in example. Use commas rather
+ than spaces to separate fields to more clearly show where whitespace is
+ introduced by a field rather than between fields.
+
+commit ee719cb98574ade2c113a17a16e6af247913456b
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 18:30:01 2019 -0700
+
+ [tab:format.type.float] Add "equivalent to" to remaining calls to
+ to_chars for consistency.
+
+commit add4ff3339153382b0e59d45e6bfeee4f923060a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 18:35:05 2019 -0700
+
+ [time.format] Fix some minor issues (comma rather than period, moving a
+ "Let" sentence out of a Remarks clause to a separate paragraph, using
+ 'class' rather than 'typename').
+
+commit d4b47a09e9089bc661c4ad6bb882a46f4aae92b6
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 18:38:26 2019 -0700
+
+ [time.syn] Fix specifier order in declarations to match library style.
+ Rename parameter 't' to 'hms' to make declaration and later description
+ match.
+
+commit 550553189899e1687629827dbb3fbf9c401f5d96
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 18:40:49 2019 -0700
+
+ [range.istream.iterator] Fix 'parent_' to the obviously-intended 'parent'.
+
+commit 791a19a1d206c77b97e7725aa9a8ea779bf94d7a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 19:08:16 2019 -0700
+
+ [chrono], [iostreams], [support] Fix 'template <' and 'typename T' to
+ the conventional 'template<' and 'class T' throughout the library.
+
+commit ac72157b97d4b7b85ddb7ca412b5a4ee1806614d
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 19:11:57 2019 -0700
+
+ [cmp.object] Add missing template-head to function description.
+
+commit b050fd474f11441942c88ef69b8622c8036656ac
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 19:26:09 2019 -0700
+
+ [re.submatch.op] Fix inconsistency between declaration and description
+ of sub_match operator<=>: remove 'constexpr' from declaration, and
+ change return type in definition from 'bool' to 'auto'.
+
+commit 1335e42809151ecfdb671ea2aea1dab0c8d5db53
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 19:33:48 2019 -0700
+
+ [iterator.concept.sizedsentinel] Avoid potential ambiguity between
+ inclusive and exclusive "or" by using "and/or".
+
+commit 1b2bfda98c20ecd71a35b7321662f8f976134793
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 19:51:39 2019 -0700
+
+ [atomic] Remove invalid trailing 'const' from non-member function
+ atomic_flag_notify_all.
+
+commit afed449f0fa1324001260c9d658f6d05da90a9f9
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 19:55:21 2019 -0700
+
+ [thread.sema.cnt] "Class" -> "Class template" in description of a class
+ template.
+
+commit 7445919de1bcf4780693b7870a245486839587ea
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 19:58:05 2019 -0700
+
+ [thread.latch] Remove italics from non-definition of "latch".
+
+commit 224384ab43e4e9829eee5d97f09218850026d342
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Sat Aug 10 20:05:07 2019 -0700
+
+ [atomic] Consistently order atomic<...> and atomic_ref<...> definitions:
+ keep compare_exchange and fetch_* operations together because the latter
+ are a particular form of compare_exchange operation.
+
+commit 8644a2ce2faa6e979e224f069e4ca48238ea8570
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 12 16:47:06 2019 -0700
+
+ [atomics.syn], [atomics.flag] Clean up presentation around
+ ATOMIC_FLAG_INIT.
+
+ * Add some vertical whitespace in description of atomic_flag operations.
+ * Reorder ATOMIC_FLAG_INIT earlier in synopsis for consistency.
+ * Add proper item description for ATOMIC_FLAG_INIT.
+ * Remove repetition of declarations of atomic_flag non-member functions
+ and the ATOMIC_FLAG_INIT macro from [atomics.flag].
+
+commit 2c1ab9775cc53e848a1efff4f9976455538994d4
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Aug 12 16:56:24 2019 -0700
+
+ [string.erasure] Following the guidance given by P0980R1, and after
+ consultation with LWG chair, mark the std::erase and std::erase_if
+ overloads for std::basic_string as constexpr in addition to those
+ explicitly called out by the wording paper.
+
+commit 009d46f9b057a635383dce8bbcad121c86f1d306
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 13 18:16:48 2019 -0700
+
+ [over.match.class.deduct] Replace "therefrom" with a more common
+ construction, and more directly talk about the class template for which
+ we are ultimately performing deduction.
+
+commit ac9189f351bf0407a31968199c22274ff41fe9e7
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 13 18:21:14 2019 -0700
+
+ [diff.cpp17.class] Remove redundant cross-reference.
+
+commit ba642aa699973f21613cbe3e6a0b6d9c1e0f2e6a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 14 16:16:48 2019 -0700
+
+ [ostream] Add back the comments that P1423R3 requested, but now as a
+ note.
+
+commit 37ccff2c0e9be3a62fcd85b55e4d05c2b312335f
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 14 16:48:00 2019 -0700
+
+ [dcl.fct.def.default] Clarify that the rule concerning how the type of a
+ defaulted function can differ from the type of an implicitly-declared
+ function only applies to the functions that are implicitly declared.
+
+commit 42ee105f5804a74bb15960944ee7fe1cd4420e04
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 14 16:56:23 2019 -0700
+
+ [over.match.class.deduct] Clarify that an incomplete class type is never
+ treated as being an aggregate.
+
+commit fce4ac9764e10042bd8d0bb4152e83d697c8bdae
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 14 17:02:06 2019 -0700
+
+ [dcl.typedef] Split paragraph on typedef name for linkage into two parts
+ (how you know when you have one, and the restrictions on types that have
+ one).
+
+commit 90a29c08bc80091c093937a7d96ce28df5ceee44
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 14 17:21:15 2019 -0700
+
+ [conv.qual] Avoid bouncing back and forth between subscripts and regular
+ scripts for T1 and T2, and add missing definition for cv^j_i and P^j_i.
+
+commit 03bcd8d3e5ece969af846e23cd451549185fdac4
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Aug 8 01:07:54 2019 +0200
+
+ [expr.ass] Remove mention of class types.
+
+commit 173905005c2c419548418239518db72bfda9dd9a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 14 17:48:53 2019 -0700
+
+ [dcl.attr.nodiscard] Make the constructor case better parallel the
+ function case by duplicating the implied "through a reachable
+ declaration" wording.
+
+commit acbe5e429499d0eaf6c118f0bca4bbc26830bcaf
+Author: Davis Herring <herring@lanl.gov>
+Date: Mon Aug 12 12:07:06 2019 -0600
+
+ [dcl.attr.nodiscard], [diff.cpp17.dcl.dcl] Fix grammar/usage
+
+commit 5aa019b19118973d99a2b2282d3f6264da81c9d8
+Author: Davis Herring <herring@lanl.gov>
+Date: Mon Aug 12 12:13:20 2019 -0600
+
+ [basic.def.odr] Clean up new bullets
+
+commit eb443396ac48b4e2ac9c6be0d9ec6bf9dda107eb
+Author: Davis Herring <herring@lanl.gov>
+Date: Mon Aug 12 12:27:41 2019 -0600
+
+ [module.reach], [over.ics.rank] Fix punctuation
+
+commit 37d2e59e8deb847f5ebdade20604bdf5c119649a
+Author: Davis Herring <herring@lanl.gov>
+Date: Mon Aug 12 14:14:50 2019 -0600
+
+ [expr.ass] Improve preposition
+
+commit 4a0fd9aa43a0d63d6fe875b886cdea8ec24d7f9d
+Author: Davis Herring <herring@lanl.gov>
+Date: Mon Aug 12 15:03:56 2019 -0600
+
+ [over.match.class.deduct] Supply missing word
+
+commit 05c786cc68bf14a828cc59f32d34fae2baf33794
+Author: Davis Herring <herring@lanl.gov>
+Date: Tue Aug 13 00:49:41 2019 -0600
+
+ [expr.new] Use typical \iref
+
+commit fc1863291a3f62a684d9bffa51fdc2837e9edcd0
+Author: Davis Herring <herring@lanl.gov>
+Date: Tue Aug 13 14:55:54 2019 -0600
+
+ [class.spaceship] Remove vacuous conversion
+
+ The synthesized three-way comparison always produces a value of type R
+
+commit 80f2c46251f07abf422cdd86a3f3d30c47fda587
+Author: Davis Herring <herring@lanl.gov>
+Date: Tue Aug 13 14:59:46 2019 -0600
+
+ [over.match.class.deduct] Fix terminology
+
+ An element with a dependent type might not be a subaggregate
+ Add cross-reference
+
+commit bfa0e698359d44e8a2b0a056e13e908a8185e296
+Author: Davis Herring <herring@lanl.gov>
+Date: Tue Aug 13 15:02:06 2019 -0600
+
+ [over.match.class.deduct] Use "deduces"
+
+ ...for consistency in example
+
+commit 174edca593a860440860f95c3ee61aa739e2afdc
+Author: Davis Herring <herring@lanl.gov>
+Date: Tue Aug 13 23:41:02 2019 -0600
+
+ [over.match.class.deduct] Simplify example
+
+commit a9f901af95f16540444144a397fe3b598ae2961b
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Wed Aug 14 17:51:44 2019 -0700
+
+ [class.dtor] "The defaulted destructor" -> "A defaulted destructor",
+ since the destructor for a class might not be defaulted.
+
diff --git a/papers/n4829.md b/papers/n4829.md
new file mode 100644
index 0000000000..0fee37aa7b
--- /dev/null
+++ b/papers/n4829.md
@@ -0,0 +1,1137 @@
+# N4829 Editors' Report -- Programming Languages -- C++
+
+2019-08-15
+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
+
+Special thanks to several paper authors
+for supplying the LaTeX sources for their papers.
+
+Special thanks also to the Editing Committee --
+Daniel Krügler, Davis Herring, Nina Ranns, and Ville Voutilainen --
+for providing a careful review of the application of these motions
+and the editorial changes described below
+to ensure the correctness of the C++20 Committee Draft.
+
+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
+
+ * [N4830](http://wg21.link/n4830) is the committee draft for C++20. It replaces [N4820](http://wg21.link/n4820).
+ * N4829 is this Editors' Report.
+
+**Note**:
+A working draft was circulated to the editing committee for review,
+and was mistakenly published with paper number N4828.
+N4828 is not the C++20 Committee Draft,
+and does not contain the results of addressing feedback from
+the editing committee.
+
+## Motions incorporated into working draft
+
+### Core working group motions
+
+CWG motion 1: [Core issue resolutions](http://wg21.link/p1510r0) for 10 issues in "tentatively ready" status applied: **(DR)**
+
+ * [682](http://wg21.link/cwg682) Missing description of lookup of template aliases
+ * [2207](http://wg21.link/cwg2207) Alignment of allocation function return value
+ * [2300](http://wg21.link/cwg2300) Lambdas in multiple definitions
+ * [2366](http://wg21.link/cwg2366) Can default initialization be constant initialization?
+ * [2376](http://wg21.link/cwg2376) Class template argument deduction with array declarator
+ * [2390](http://wg21.link/cwg2390) Is the argument of `__has_cpp_attribute` macro-expanded?
+ * [2400](http://wg21.link/cwg2400) Constexpr virtual functions and temporary objects
+ * [2404](http://wg21.link/cwg2404) `[[no_unique_address]]` and allocation order
+ * [2406](http://wg21.link/cwg2406) `[[fallthrough]]` attribute and iteration statements
+ * [2418](http://wg21.link/cwg2418) Missing cases in definition of "usable in constant expressions"
+
+CWG motion 2: [P1161R3 "Deprecate uses of the comma operator in subscripting expressions"](http://wg21.link/p1161r3)
+
+CWG motion 3: [P1331R2 "Permitting trivial default initialization in constexpr contexts"](http://wg21.link/p1331r2)
+
+CWG motion 4: [P0735R1 "Interaction of `memory_order_consume` with release sequences"](http://wg21.link/p0735r1)
+
+CWG motion 5: [P0848R3 "Conditionally trivial special member functions"](http://wg21.link/p0848r3)
+
+CWG motion 6: [P1186R3 "When do you actually use `<=>`?"](http://wg21.link/p1186r3)
+
+CWG motion 7: [P1301R4 "`[[nodiscard("should have a reason")]]`"](http://wg21.link/p1301r4)
+
+CWG motion 8: [P1099R5 "`using enum`"](http://wg21.link/p1099r5)
+
+CWG motion 9: [P1630R1 "Spaceship needs a tune-up"](http://wg21.link/p1630r1)
+
+CWG motion 10: [P1616R1 "Using unconstrained template template parameters with constrained templates"](http://wg21.link/p1616r1)
+
+CWG motion 11: [P1816R0 "Class template argument deduction for aggregates"](http://wg21.link/p1816r0)
+
+CWG motion 12: [P1668R1 "Enabling `constexpr` intrinsics by permitting unevaluated inline assembly in `constexpr` functions"](http://wg21.link/p1668r1)
+
+CWG motion 13: [P1766R1 "Mitigating minor modules maladies"](http://wg21.link/p1766r1) **(DR)**
+
+CWG motion 14: [P1811R0 "Relaxing redefinition restrictions for re-exportation robustness"](http://wg21.link/p1811r0)
+
+CWG motion 15: [P0388R4 "Permit conversions to arrays of unknown bound"](http://wg21.link/p0388r4)
+
+CWG motion 16: [P1823R0 "Remove contracts"](http://wg21.link/p1823r0)
+
+CWG motion 17: [P1143R2 "Adding the `constinit` keyword"](http://wg21.link/p1143r2)
+
+CWG motion 18: [P1452R2 "On the non-uniform semantics of *return-type-requirement*s"](http://wg21.link/p1452r2)
+
+CWG motion 19: [P1152R4 "Deprecating `volatile`"](http://wg21.link/p1152r4)
+
+CWG motion 20: [P1771R1 "`[[nodiscard]]` for constructors"](http://wg21.link/p1771r1) **(DR)**
+
+CWG motion 21: [P1814R0 "Class template argument deduction for alias templates"](http://wg21.link/p1814r0)
+
+CWG motion 22 was withdrawn
+
+CWG motion 23: [P1825R0 "Merged wording for P0527R1 and P1155R3"](http://wg21.link/p1825r0) **(DR)**
+
+ * [P0527R1 "Implicitly move from rvalue references in return statements"](http://wg21.link/p0527r1)
+ * [P1155R3 "More implicit moves"](http://wg21.link/p1155r3)
+
+CWG motion 24: [P1703R1 "Recognizing header unit imports requires full preprocessing"](http://wg21.link/p1703r1)
+
+CWG motion 25: [P0784R7 "More `constexpr` containers"](http://wg21.link/p0784r7)
+
+### Library working group motions
+
+LWG motion 1: [Library issue resolutions](http://wg21.link/p1724r0) for 17 issues in "Ready" and "Tentatively Ready" status applied: **(DR)**
+
+ * [3209](http://wg21.link/lwg3209) Expression in `year::ok()` returns clause is ill-formed
+ * [3208](http://wg21.link/lwg3208) `Boolean`'s expression requirements are ordered inconsistently
+ * [3206](http://wg21.link/lwg3206) `year_month_day` conversion to `sys_days` uses not-existing member function
+ * [3202](http://wg21.link/lwg3202) [P0318R1](http://wg21.link/p0318r1) was supposed to be revised
+ * [3199](http://wg21.link/lwg3199) `istream >> bitset<0>` fails
+ * [3198](http://wg21.link/lwg3198) Bad constraint on `std::span::span()`
+ * [3196](http://wg21.link/lwg3196) `std::optional` is ill-formed if `T` is an array
+ * [3191](http://wg21.link/lwg3191) `std::ranges::shuffle` synopsis does not match algorithm definition
+ * [3187](http://wg21.link/lwg3187) [P0591R4](http://wg21.link/p0591r4) reverted [DR 2586](http://wg21.link/lwg2586) fixes to `scoped_allocator_adaptor::construct()`
+ * [3186](http://wg21.link/lwg3186) Ranges `remove`, `partition`, and `partial_sort_copy` algorithms discard useful information
+ * [3185](http://wg21.link/lwg3185) Uses-allocator construction functions missing `constexpr` and `noexcept`
+ * [3184](http://wg21.link/lwg3184) Inconsistencies in `bind_front` wording
+ * [3183](http://wg21.link/lwg3183) Normative permission to specialize ranges variable templates
+ * [3169](http://wg21.link/lwg3169) Ranges permutation generators discard useful information
+ * [3158](http://wg21.link/lwg3158) `tuple(allocator_arg_t, const Alloc&)` should be conditionally explicit
+ * [3055](http://wg21.link/lwg3055) `path::operator+=(`single-character`)` misspecified
+ * [2899](http://wg21.link/lwg2899) `is_(nothrow_)move_constructible` and `tuple`, `optional` and `unique_ptr`
+
+LWG motion 2: [P1355R2 "Exposing a narrow contract for `ceil2`"](http://wg21.link/p1355r2)
+
+LWG motion 3: [P0553R4 "Bit operations"](http://wg21.link/p0553r4)
+
+LWG motion 4: [P1424R1 "`constexpr` feature macro concerns"](http://wg21.link/p1424r1)
+
+LWG motion 5: [P0645R10 "Text formatting"](http://wg21.link/p0645r10)
+
+LWG motion 6: [P1361R2 "Integration of chrono with text formatting"](http://wg21.link/p1361r2)
+
+LWG motion 7: [P1652R1 "Printf corner cases in `std::format`"](http://wg21.link/p1652r1)
+
+LWG motion 8: [P0631R8 "Math constants"](http://wg21.link/p0631r8)
+
+LWG motion 9: Synchronization library:
+
+ * [P1135R6 "The C++20 synchronization library"](http://wg21.link/p1135r6)
+ * [P1643R1 "Add wait/notify to `atomic_ref`"](http://wg21.link/p1643r1)
+ * [P1644R0 "Add wait/notify to `atomic`"](http://wg21.link/p1644r0)
+
+LWG motion 10: [P1466R3 "Miscellaneous minor fixes for chrono"](http://wg21.link/p1466r3)
+
+LWG motion 11: [P1754R1 "Rename concepts to `standard_case` for C++20, while we still can"](http://wg21.link/p1754r1)
+
+LWG motion 12: [P1614R2 "The mothership has landed"](http://wg21.link/p1614r2)
+
+LWG motion 13: [P0325R4 "`to_array` from LFTS with updates"](http://wg21.link/p0325r4)
+
+LWG motion 14: [P0408R7 "Efficient access to `basic_stringbuf`'s buffer"](http://wg21.link/p0408r7)
+
+LWG motion 15: [P1423R3 "`char8_t` backward compatibility remediation"](http://wg21.link/p1423r3)
+
+LWG motion 16: [P1502R1 "Standard library header units"](http://wg21.link/p1502r1)
+
+LWG motion 17: [P1612R1 "Relocate `endian`'s specification"](http://wg21.link/p1612r1)
+
+LWG motion 18: [P1661R1 "Remove dedicated precalculated hash lookup interface"](http://wg21.link/p1661r1)
+
+LWG motion 19: [P1650R0 "Output `std::chrono::days` with `d` suffix"](http://wg21.link/p1650r0)
+
+LWG motion 20: [P1651R0 "`bind_front` should not unwrap `reference_wrapper`"](http://wg21.link/p1651r0)
+
+LWG motion 21: [P1065R2 "Constexpr `invoke`"](http://wg21.link/p1065r2)
+
+LWG motion 22: [P1207R4 "Movability of single-pass iterators"](http://wg21.link/p1207r4)
+
+LWG motion 23: [P1035R7 "Input range adaptors"](http://wg21.link/p1035r7)
+
+LWG motion 24: [P1638R1 "`basic_istream_view::iterator` should not be copyable"](http://wg21.link/p1638r1)
+
+LWG motion 25: [P1522R1 "Iterator difference type and integer overflow"](http://wg21.link/p1522r1)
+
+LWG motion 26: [P1004R2 "Making `std::vector` constexpr"](http://wg21.link/p1004r2)
+
+LWG motion 27: [P0980R1 "Making `std::string` constexpr"](http://wg21.link/p0980r1)
+
+LWG motion 28: [P0660R10 "Stop token and joining thread"](http://wg21.link/p0660r10)
+
+LWG motion 29: [P1474R1 "Helpful pointers for `ContiguousIterator`"](http://wg21.link/p1474r1)
+
+LWG motion 30: [P1523R1 "Views and size types"](http://wg21.link/p1523r1)
+
+LWG motion 31: [P0466R5 "Layout-compatibility and pointer-interconvertibility traits"](http://wg21.link/p0466r5)
+
+LWG motion 32: [P1208R6 "`source_location`"](http://wg21.link/p1208r6)
+
+## Notable editorial changes
+
+### CWG motion 21
+
+The changes for this motion in [over.match.class.deduct]
+described the matching of a *simple-template-id* against
+the *defining-type-id* of an alias template
+in imprecise terms
+(quoting only part of the grammar to which the change intended to apply).
+This has been made more precise by repeating the full grammar
+previously specified in [dcl.type.simple]
+in [over.match.class.deduct].
+
+### LWG motions 5-7
+
+The new `std::format` library underwent substantial editorial rework
+for clarity and precision.
+Thanks to Tomasz Kamiński and
+Johel Ernesto Guerrero Peña
+for reviewing the resulting edits,
+and to Victor Zverovich for responding to various questions about intent.
+
+### LWG motion 10
+
+The `operator<<` added for `hh_mm_ss` was written in terms of
+the old chrono formatting machinery that was replaced by
+`std::format`-based machinery by LWG motion 6.
+It has been rephrased in terms of `std::format`.
+Thanks to Howard Hinnant for providing wording.
+
+### LWG motion 11
+
+In addition to the requested renames, the following concepts were also renamed,
+following the editorial instructions to rename all other concepts:
+
+ * `ThreeWayComparableWith` -> `three_way_comparable_with`
+ * `ThreeWayComparable` -> `three_way_comparable`
+ * `ForwardRange` -> `forward_range`
+
+### LWG motion 14
+
+This motion requested that the same constructor be added to `basic_stringbuf`
+twice. It was only added once.
+
+### LWG motion 23
+
+The wording paper proposed making changes to the algorithms
+
+ * `std::ranges::sample`
+ * `std::ranges::shift_left`
+ * `std::ranges::shift_right`
+
+However, these algorithms were never adopted into the C++ working draft from
+the Ranges Technical Specification, so after consulting with the Library
+Working Group, the requested changes to these algorithms were ignored.
+
+### LWG motion 26, 27
+
+These motions would have added `constexpr` to
+`operator<`, `operator>`, `operator<=`, `operator>=`, and `operator!=` functions
+that LWG motion 12 removed.
+Instead `constexpr` was added to the replacement `operator<=>`.
+
+In addition, following the paper's request to add `constexpr` to any
+`std::basic_string` functions that the wording missed, and after consulting
+with the LWG chair as directed, the overloads of `std::erase` and
+`std::erase_if` for `std::basic_string` were also marked `contexpr`.
+
+### 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, the following section labels have been renamed:
+
+ * [concept.convertibleto] => [concept.convertible]
+ * [concept.derivedfrom] => [concept.derived]
+ * [concept.stricttotallyordered] => [concept.totallyordered]
+
+## Feature test macros
+
+Attention should be drawn to the fact that multiple papers updated feature test
+macros to the same version:
+
+ * `__cpp_constexpr` was updated to `201907L` by both
+ [P1331R2](http://wg21.link/p1331r2) (CWG motion 3) and
+ [P1668R1](http://wg21.link/p1668r1) (CWG motion 12).
+ * `__has_cpp_attribute(nodiscard)` was updated to `201907L` by both
+ [P1304R4](http://wg21.link/p1304r4) (CWG motion 7) and
+ [P1771R1](http://wg21.link/p1771r1) (CWG motion 20).
+
+Implementers should be aware that the new version of the feature test macro
+advertises support for both papers in these cases (in addition to advertising
+support for prior papers that gave smaller version numbers to the relevant
+macro).
+
+## Minor editorial fixes
+
+A log of editorial fixes made to the working draft since N4820 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/n4820...n4830).
+
+ commit 44ea29778d15cd5d9f2b5c706c6b3f4338548ec2
+ Author: Casey Carter
+ Date: Tue Jun 25 06:04:14 2019 -0700
+
+ [range.filter.sentinel] Correct typo in constructor Effects (#2937)
+
+ commit 97b615a5a6ab0598b624ee05402c531d0421cff6
+ Author: Casey Carter
+ Date: Tue Jun 25 06:09:55 2019 -0700
+
+ [iterator.synopsis] Copy constraint for iterator_traits from [iterator.traits]/5 (#2943)
+
+ commit da7eac5e621b5fab12c0b1992100c4bfd983ed8e
+ Author: Saar Raz
+ Date: Mon Jul 1 22:46:37 2019 +0300
+
+ [Concepts] Remove qualified-concept-name reference
+
+ Update 'qualified-concept-name' (the previous incarnation of 'type-constraint') reference to 'type-constraint' in [temp.over.link]p6.
+
+ commit f54f306c3b9fad27e70766963840e3df14f20b28
+ Author: Jens Maurer
+ Date: Thu Jul 4 15:34:38 2019 +0200
+
+ [func.bind] Remove bogus 'shall's. (#2955)
+
+ commit 72cc844ef44ae47aebb1ad346146138d3279be9e
+ Author: Eelis
+ Date: Fri Jul 5 16:16:58 2019 +0200
+
+ [expr.reinterpret.cast] Properly capitalize full-sentence bullets. (#2956)
+
+ commit c635711cdd81346ad41c7861adb8035176fa236f
+ Author: Eelis
+ Date: Fri Jul 5 23:55:22 2019 +0200
+
+ [temp.constr.constr] Add missing period at end of sentence. (#2957)
+
+ commit 4f9942cafadc17fb902610b4c67afb6fcf81ff64
+ Author: Jens Maurer
+ Date: Sun Jul 7 19:38:20 2019 +0200
+
+ [dcl.asm] Rename grammar term 'asm-definition' to 'asm-declaration'
+
+ commit 51c5b01217799fdfa754179c20af888ec8c1889d
+ Author: Casey Carter
+ Date: Wed Jul 10 00:40:19 2019 -0700
+
+ [temp.constr.order] Remove extraneous "the". (#2964)
+
+ commit 67db9422b6bc58f5399c7c019ec5ede28d8ac4f5
+ Author: Jens Maurer
+ Date: Fri Jun 28 17:01:54 2019 +0200
+
+ [expr.prim.req] Fix cross-reference for substituting into constraints.
+
+ commit 98c2c56ab5e945452586270d72d2fb606b71cd94
+ Author: Richard Smith
+ Date: Mon Jul 22 02:24:42 2019 +0200
+
+ [class.prop] [special] Move definition of eligible special member
+ functions to the section on special member functions.
+
+ commit 94a72b5c11a20cfd6c92a4faa5bd0df4b8ebc620
+ Author: Richard Smith
+ Date: Mon Jul 22 02:28:15 2019 +0200
+
+ [class.dtor] Reorder the introduction of an implicit prospective
+ destructor to before we describe the overload resolution to pick the
+ actual destructor.
+
+ commit 6bd3daeae3a3e9ae6174c35ab020dbfe4504b75b
+ Author: Richard Smith
+ Date: Thu Aug 1 20:04:36 2019 -0700
+
+ [class.ctor], [class.dtor] Introduce actual definitions for
+ "constructor" and "prospective destructor".
+
+ commit dc45e8c329eeb0076d074fa671c2be2fc605555a
+ Author: Richard Smith
+ Date: Mon Jul 22 03:18:33 2019 +0200
+
+ [class.spaceship] Remove incorrect note.
+
+ commit d6a291776858bc647fc6826888767284f305c799
+ Author: Richard Smith
+ Date: Mon Jul 22 03:58:34 2019 +0200
+
+ [dcl.attr.nodiscard] Simplify note describing the string-literal in a
+ nodiscard attribute and make it less confusing.
+
+ commit 46ba985402de963f50d364b26b594707be16c7c9
+ Author: Richard Smith
+ Date: Mon Jul 22 04:42:43 2019 +0200
+
+ [dcl.enum] Avoid hanging paragraphs by moving "Enumeration declarations"
+ down one level to a sibling of "The using enum declaration".
+
+ [namespace.udir] Rename section to "Using namespace directive" to
+ further distinguish this from a using enum declaration.
+
+ commit 5d1bb1c7f8ed44016c38bfeb9797e363d52cfc51
+ Author: Richard Smith
+ Date: Thu Aug 1 20:42:13 2019 -0700
+
+ [over.match.oper] Replace "member, non-member, and built-in candidates"
+ with "non-rewritten candidates"
+
+ This simplifies the wording, implicitly explains why we're considering
+ only some candidates, and avoids overtly suggesting that we could ever
+ pick a reversed-parameter-order built-in candidate.
+
+ commit 1fbc1c315008152770eea8bd383aa2a4fa47cfd5
+ Author: Jens Maurer
+ Date: Fri Jul 26 16:56:13 2019 +0200
+
+ [basic.def.odr] Turn long comma-separate list into bullets.
+
+ commit c0c589881759871b2183105f315d4ddd0d2734be
+ Author: Jens Maurer
+ Date: Thu Aug 1 22:47:19 2019 +0200
+
+ [expr.const.cast] Clarify pairwise correspondence for P_i.
+ [over.ics.rank] Move cross-reference pointing to [conv.qual].
+
+ commit 47539b965a84f69c548fe043a632af17db3cb315
+ Author: Richard Smith
+ Date: Fri Aug 2 15:49:39 2019 -0700
+
+ [conv.qual] Move note after the rule that implies it.
+
+ commit f10e3751b39138746b601fa702c9ed9e67777c96
+ Author: Richard Smith
+ Date: Fri Aug 2 15:59:50 2019 -0700
+
+ [over.ics.rank] Reorder examples to match order of normative text.
+
+ commit 813a4300a036f12d5ff6b82965b83a8e87b1ae8d
+ Author: Richard Smith
+ Date: Fri Aug 2 16:55:56 2019 -0700
+
+ [dcl.attr.nodiscard] Fix vexing-parse bug in example. Make sure the
+ missiles actually get launched, not merely redeclared.
+
+ commit 6e845457bfd83f20c2f61bf4015afcd96cbd0cec
+ Author: Richard Smith
+ Date: Fri Aug 2 17:17:52 2019 -0700
+
+ [over.match.class.deduct] Fix failure to handle the case where a
+ deducible alias template's defining-type-id contains a
+ nested-name-specifier (or 'typename' or 'template' keywords).
+
+ commit 7226ced32fe3cda28eb05f044985427684397128
+ Author: Richard Smith
+ Date: Fri Aug 2 17:26:53 2019 -0700
+
+ [over.match.class.deduct] Switch from imperative to passive, and clarify
+ what happens if the various 'if' conditions are not met.
+
+ commit 6552c03d3793e7532793097d760edc3a93e150b1
+ Author: Richard Smith
+ Date: Fri Aug 2 17:32:40 2019 -0700
+
+ [over.match.class.deduct] Put all bullets describing the properties of
+ f' at the same depth, and guard them all by the condition that we're
+ actually adding an f' to the set of guides.
+
+ commit b3b7d37c073051826c21c231bd386c10d64433dc
+ Author: Jens Maurer
+ Date: Fri Aug 2 22:09:14 2019 +0200
+
+ [class.copy.elision] Add cross-reference, fix example.
+
+ commit 4a657ca3e26850a993c2015bbecd6287e817a615
+ Author: Richard Smith
+ Date: Sat Aug 3 18:51:09 2019 -0700
+
+ [iterator.concept.sizedsentinel], [range.sized], [range.view]
+ Provide proper descriptions for disable_sized_sentinel,
+ disable_sized_range, and enable_view.
+
+ commit 796c871f9b14a42fea634ec97a35032bfe3c422a
+ Author: Jens Maurer
+ Date: Tue Jul 23 09:57:04 2019 +0200
+
+ [bit] Avoid std::numeric_limits<...>
+
+ Referring to numeric_limits (without std:: prefix) is sufficient.
+
+ commit fb97956bc9eee5a50c10df9148d9422e260e352c
+ Author: Richard Smith
+ Date: Wed Jul 31 17:28:28 2019 -0700
+
+ [format.formatter] Add subclause heading to avoid hanging paragraphs.
+
+ commit eae84a0a10b4409da01ae5c9e7c734e113973cdf
+ Author: Richard Smith
+ Date: Wed Jul 31 17:34:37 2019 -0700
+
+ [format.string] Clarify that "other characters" means "characters other
+ than { and }".
+
+ commit b62dc39c0541a1968ac1717773574f4ef868934c
+ Author: Richard Smith
+ Date: Wed Jul 31 18:05:00 2019 -0700
+
+ [format.string] Change 'integer' grammar to be left-recursive and factor
+ out separate positive-integer and nonnegative-integer productions for
+ clarity.
+
+ commit 2db4bd64f7f157266ae0f7c7c44c4fe7c68c6070
+ Author: Richard Smith
+ Date: Wed Jul 31 18:14:56 2019 -0700
+
+ [format.string] Fix wording that talks about omitting arg-ids but
+ presupposes that they are all present to instead specify what happens
+ when some or all are absent.
+
+ commit 5a32fd1040b8a7c4c997ba8841c4f28a34a6c97d
+ Author: Richard Smith
+ Date: Wed Jul 31 18:26:41 2019 -0700
+
+ [format.string] Add missing grammar definition for custom-format-spec
+ rather than leaving it dangling.
+
+ commit d529b96f3be22332d4a88de646f56cb636680f6c
+ Author: Richard Smith
+ Date: Wed Jul 31 18:33:05 2019 -0700
+
+ [format.string] Make tone of wording more formal and less tutorialesque.
+
+ commit 3ced91d524f3c2a850243863440151735276b38a
+ Author: Richard Smith
+ Date: Wed Jul 31 18:41:56 2019 -0700
+
+ [format.context] Add specification of wformat_context analogous to that
+ of format_context, as discussed on lib reflector.
+
+ commit ed00761315546c11b48441e1bcef6aa5927f76c8
+ Author: Richard Smith
+ Date: Thu Aug 1 18:17:10 2019 -0700
+
+ [format.string] Explicitly list all the possible formatting types for
+ bool and charT in their respective tables rather than requiring the
+ reader to infer how to merge the integer table into the bool and charT
+ tables.
+
+ commit 46622695da52f8080f7280207eecd93bd950cc1a
+ Author: Richard Smith
+ Date: Sat Aug 3 19:57:13 2019 -0700
+
+ [format.functions] Use clamp rather than min(max(a,b),c)
+
+ Co-Authored-By: Johel Ernesto Guerrero Peña
+
+ commit a870403a2dc47924e7f607f7c69694291d43007c
+ Author: Richard Smith
+ Date: Sat Aug 3 20:39:06 2019 -0700
+
+ [format.arg] Don't use placeholder name for private member char-type.
+
+ commit d17fd4d5f10f6af87654fdc73bd6417313a295f2
+ Author: Richard Smith
+ Date: Sun Aug 4 14:04:04 2019 -0700
+
+ [format.string] Avoid duplicating the specification of '#' for integers.
+
+ Fix the specification for '#' being different for octal integers in the
+ two places it's specified.
+
+ commit e30b8a69d485b96ddacfa31b7eb411c5a64d83a5
+ Author: Richard Smith
+ Date: Sun Aug 4 14:23:48 2019 -0700
+
+ [format.string] Separate out the general (type-independent) description
+ of formatting from the format specifiers for arithmetic and string
+ types, and make the presentation of the latter consistent with the
+ presentation for chrono types.
+
+ commit f430bec8e7a4437b69d1ad31b2c1f4246e753770
+ Author: Richard Smith
+ Date: Sun Aug 4 15:09:26 2019 -0700
+
+ [format.string.std] Convert normative duplication to a note to avoid
+ creating the impression that alignment is only applied to non-string
+ types.
+
+ commit b6454e39ede7ab11ce0958fa2ee3b487c8983ae1
+ Author: Richard Smith
+ Date: Sun Aug 4 15:32:02 2019 -0700
+
+ [format.string] Further clarify description of cases where formatting is
+ described in terms of a call to to_chars.
+
+ commit 895f30bd225d050bcb2ab9f0a793af9865dcd513
+ Author: Richard Smith
+ Date: Sun Aug 4 20:02:33 2019 -0700
+
+ [format.formatter] Reorder Formatter requirements before the
+ descriptions of specializations that meet those requirements.
+
+ commit c7ada4d28ae7be82ef64104617e216fd738a4d0f
+ Author: Jens Maurer
+ Date: Tue Jul 30 16:07:16 2019 +0200
+
+ [numbers] Use 'template', not 'typename'.
+
+ commit 14aa4ed0d323c163f0559bd7c8555d77f2dc8093
+ Author: Jens Maurer
+ Date: Tue Jul 30 16:12:59 2019 +0200
+
+ [math.constants] Expand 'math' to 'mathematical'.
+
+ commit 3f761c76b5daf9f1a75695226514c323ba6619f0
+ Author: Jens Maurer
+ Date: Thu Aug 1 10:50:09 2019 +0200
+
+ [numbers.syn] Use 'namespace std::numbers'.
+
+ commit dc61857d3779253c6cdeec572cdcb43077b0ce86
+ Author: Richard Smith
+ Date: Sun Aug 4 20:51:47 2019 -0700
+
+ [atomics.lockfree] "are" -> "is"; "along with" is not a coordinating
+ conjunction.
+
+ commit 3d3f16f99454d3ffffcfbf92a02b9bcaac9b375b
+ Author: Richard Smith
+ Date: Sun Aug 4 21:50:27 2019 -0700
+
+ [thread.barrier.class] Rename constructor parameter from `phase_count`
+ to `expected`.
+
+ The parameter is not a phase count, and is referred to by other
+ normative wording as `expected`; also, `expected` is the name we use for
+ the same parameter in the constructor of `latch`.
+
+ commit 2e82327045fb92d89dd1431cc7e771da63c982dc
+ Author: Jens Maurer
+ Date: Thu Aug 1 10:37:25 2019 +0200
+
+ [time.hms.members] Rephrased note.
+ [time.hms.overview] Removed redundant declaration of operator<<.
+ [time.hms.overview] Moved exposition-only data members to the bottom.
+
+ commit 1a37c22bb6b621f14d01b4e16378c9cd08724183
+ Author: Richard Smith
+ Date: Sun Aug 4 23:36:25 2019 -0700
+
+ [time.hms.nonmembers] Finish rebase on std::format: rewrite hh_mm_ss
+ operator<< in terms of format rather than using (removed) old formatting
+ terminology.
+
+ commit 584a87ec1d48862b9e68a269d0a5eb7b05d6999d
+ Author: Richard Smith
+ Date: Mon Aug 5 13:57:50 2019 -0700
+
+ [time.hms.nonmembers] Fix editorial error in hh_mm_ss operator<< (only
+ stream to 'os' once). This formulation was proposed by Howard Hinnant
+ on the lib reflector.
+
+ commit d243672db3269754d4ee91a5fbcdfb82ae6f2539
+ Author: Jens Maurer
+ Date: Tue Jul 30 16:01:10 2019 +0200
+
+ Apply P1452R2 On the non-uniform semantics of return-type-requirements
+ to newly-introduced return type requirements.
+
+ commit 90f64792ec7d5372a093d3bea69dffff2f7af28a
+ Author: Richard Smith
+ Date: Mon Aug 5 13:48:59 2019 -0700
+
+ Rename _s to -s in placeholder names per editorial guidelines.
+
+ commit ad685c42b18103ace094b375a4fde1a7ec6aba02
+ Author: Dawn Perchik
+ Date: Tue Jul 30 19:33:10 2019 -0700
+
+ [stringbuf] Name string parameters "s" instead of "str" for consistency and to avoid confusion with "str" methods.
+
+ commit 26f7cd6d3b2d271c74e1d2022f972f833de940f6
+ Author: Dawn Perchik
+ Date: Thu Aug 1 13:35:42 2019 -0700
+
+ [stringbuf.members] Minor fixes to P0408R7 wording.
+
+ "str()" should be "str"; we're talking about all str member functions here.
+ Add comma after "For efficiency reasons".
+ "i.e." -> "e.g." since we're describing an example case.
+
+ commit b4a8b798e00bce697af9b477a214828b69e9e383
+ Author: Richard Smith
+ Date: Mon Aug 5 17:31:21 2019 -0700
+
+ [module.unit] Add "either" to clarify that we're talking about
+ module-names containing a reserved identifier, not module names starting
+ with an identifier that contains a reserved identifier.
+
+ commit 906fd4d0519994e06659ce066c8252df186c23b9
+ Author: Richard Smith
+ Date: Mon Aug 5 17:57:35 2019 -0700
+
+ [func.require] Convert restrictive 'which' to 'that'.
+
+ commit 7e862f0f238257b2cbb1f7296a593b4587029e39
+ Author: Richard Smith
+ Date: Mon Aug 5 18:46:55 2019 -0700
+
+ [range.transform.sentinel] Reinstate transform_view::sentinel::operator-
+ overloads, accidentally removed during application of P1614R2.
+
+ commit e02aa79ca43de3fdf6e1887d4fd02bc58874e190
+ Author: Jens Maurer
+ Date: Wed Jul 31 22:55:50 2019 +0200
+
+ [range.istream.view] Do not repeat declaration of function istream_view
+ [range.elements.iterator] Renamed from [range.elements_view.iterator]
+ [range.elements.iterator] Use local typedef difference_type
+ [range.elements.iterator] Use reference return type for compound assignment
+
+ commit a0b5a70fade22203ebfbaeb4828e0c304b1f62ab
+ Author: Richard Smith
+ Date: Mon Aug 5 23:02:38 2019 -0700
+
+ [ranges] Fix 'constexpr friend' to our preferred order 'friend constexpr'.
+
+ commit f0256ab73cd6a9fae611af95526d16fe59968d4c
+ Author: Richard Smith
+ Date: Mon Aug 5 23:08:59 2019 -0700
+
+ [range.drop.view] Fix typo "requirement" -> "required".
+
+ commit 7698c3dc28251540b4a4733cc4a6b3f6942f13ed
+ Author: Richard Smith
+ Date: Tue Aug 6 00:40:47 2019 -0700
+
+ [range.iota.view] Rename IOTA_DIFF_T to the preferred IOTA-DIFF-T.
+
+ commit cf1bc270c0e7d7b1670502c69268b0373bbf9799
+ Author: Richard Smith
+ Date: Tue Aug 6 01:35:47 2019 -0700
+
+ [thread] Update headings, comments, and line wrapping to match editorial
+ conventions.
+
+ commit 7f4e95e3296b31c23bfb358f31294d384a955e3b
+ Author: Jens Maurer
+ Date: Sat Aug 3 08:38:34 2019 +0200
+
+ [support.srcloc] Fix comments in example.
+
+ commit 06ab7ebef8a763e36f87f504ed7765528aa25fc7
+ Author: Richard Smith
+ Date: Tue Aug 6 02:28:42 2019 -0700
+
+ [support.srcloc.cons] Use term "default member initialier" rather than
+ describing it indirectly.
+
+ commit 7beed51f4388074f46fd55a7c5f559cd82b7c40c
+ Author: Dawn Perchik
+ Date: Tue Jul 30 20:36:34 2019 -0700
+
+ [alg.is.permutation] Add parameters to \libconcept{sized_sentinel_for} as suggested in PR #3099.
+
+ commit fbb0691134e39059adaa4a886e7d746b0e56c81c
+ Author: Dawn Perchik
+ Date: Wed Jul 31 12:52:26 2019 -0700
+
+ [concepts] Renamed concepts' section names to remove trailing prepositions for consistency.
+
+ * concept.convertibleto => concept.convertible
+ * concept.derivedfrom => concept.derived
+ * concept.stricttotallyordered => concept.totallyordered
+
+ commit e2a070f7a5484e272c10e4ab31359fede5ff24a1
+ Author: Richard Smith
+ Date: Tue Aug 6 13:51:24 2019 -0700
+
+ [diff.cpp17.library], [tab:headers.cpp] Add missing entry
+ to the list of headers, and add various missing entries to the list of
+ new-in-C++20 headers.
+
+ Fixes #3122.
+
+ commit 54a87d7849e7d5283c2d0a34f8200ef6a67bb0da
+ Author: Jens Maurer
+ Date: Tue Aug 6 23:17:24 2019 +0200
+
+ [conv.qual,expr.static.cast] Harmonize notes on cv-qualified function types.
+
+ commit ee234abfbfa7deb5c585b67590205e1660df180f
+ Author: Jens Maurer
+ Date: Thu Aug 1 16:45:51 2019 +0200
+
+ [time.clock,bit.cast] Replace template with template
+
+ as per library specification policy.
+
+ commit a374c4f3664cf84a4440feb3c236076b25cfe736
+ Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
+ Date: Thu Jul 25 21:24:06 2019 +0200
+
+ [tuple] Use "objects" instead of "variables"
+ with "temporary" in the definition of `forward_as_tuple`
+
+ commit 7e02aa3d7d3e5e9dfc2c66451e112d40f4491465
+ Author: Jonathan Wakely
+ Date: Mon Jul 22 23:27:57 2019 +0100
+
+ [is.sorted] Add missing "return" and semi-colon
+
+ This was lost when changing "Returns:" to "Effects:" for P0896R4. The
+ paper included this change, but it was lost when applying it.
+
+ commit cc421307fb4ce393e7ab1dcf0d0f1298d163fbe0
+ Author: Yehezkel Bernat
+ Date: Sun Jul 21 22:16:23 2019 +0300
+
+ Delete irrelevant copy-paste from previous section
+
+ commit d4c4cc0ac037c51ec10cf6f7c80d8c761b517cba
+ Author: onihusube <44743040+onihusube@users.noreply.github.com>
+ Date: Wed Jul 17 22:46:24 2019 +0900
+
+ [basic.lookup.argdep]/5 add export to apply()
+
+ fix #2968
+
+ commit 557cfa9dd706780fb672bfe9e5e2f0ef3b2f3d4a
+ Author: Jens Maurer
+ Date: Thu Jul 4 09:31:57 2019 +0200
+
+ [basic.life] Lifetime of class objects is treated uniformly
+ under CWG2256, regardless of triviality of the destructor.
+
+ commit 4c3b9f50ecd230263974c81e1df2fb07b541c58d
+ Author: onihusube <44743040+onihusube@users.noreply.github.com>
+ Date: Mon Jul 1 16:26:16 2019 +0900
+
+ [module.global] fix sample code comment
+
+ commit 06bd4b02febcb43c014ffd46b7a07dab8d66aa4b
+ Author: onihusube <44743040+onihusube@users.noreply.github.com>
+ Date: Mon Jul 1 16:41:33 2019 +0900
+
+ [cpp.module] fix sample code comment
+
+ commit 1be069efaa41f4df376364290f8069ec030b13cc
+ Author: Jens Maurer
+ Date: Fri Jun 28 17:11:44 2019 +0200
+
+ [time.parse] Fix description of %Ex and %EX parse flags.
+
+ Also refer to the table number instead of 'the table below'.
+
+ commit f038d86fb9112b62adaaebaf95dc70d786412cbd
+ Author: Jens Maurer
+ Date: Fri Jun 28 16:50:03 2019 +0200
+
+ [res.on.functions] Properly capitalize full-sentence bullets.
+
+ Also add periods at the end of sentences.
+
+ commit 43945886b4ff4481da3d29b3f624d55bc9b5d124
+ Author: Jens Maurer
+ Date: Mon Jun 24 22:43:30 2019 +0200
+
+ [conv.qual] Fix example for cv-decomposition.
+
+ After CWG2051, a cv-decomposition can also be a no-op.
+
+ commit 915031ddbf75f856efcea43928d9f459140834fd
+ Author: Jens Maurer
+ Date: Tue Aug 6 09:31:52 2019 +0200
+
+ [meta.trans.other] Use hyphens, not underscores, for meta-functions.
+
+ commit be443affbf06bfb14c2295311ed469896ae39d6c
+ Author: Richard Smith
+ Date: Wed Aug 7 17:59:27 2019 -0700
+
+ [range.drop.while.overview] Add missing space in example.
+
+ commit 1e09011ff3627db60ae10fa8fee2e2f5ef7dc5c9
+ Author: Richard Smith
+ Date: Sat Aug 10 18:13:55 2019 -0700
+
+ [format.string.general] indexes -> indices
+
+ commit 71251ae592a49149faec1389ec85f22322aa0ba5
+ Author: Richard Smith
+ Date: Sat Aug 10 18:23:43 2019 -0700
+
+ [format.string.std] Fix space collapse in example. Use commas rather
+ than spaces to separate fields to more clearly show where whitespace is
+ introduced by a field rather than between fields.
+
+ commit ee719cb98574ade2c113a17a16e6af247913456b
+ Author: Richard Smith
+ Date: Sat Aug 10 18:30:01 2019 -0700
+
+ [tab:format.type.float] Add "equivalent to" to remaining calls to
+ to_chars for consistency.
+
+ commit add4ff3339153382b0e59d45e6bfeee4f923060a
+ Author: Richard Smith
+ Date: Sat Aug 10 18:35:05 2019 -0700
+
+ [time.format] Fix some minor issues (comma rather than period, moving a
+ "Let" sentence out of a Remarks clause to a separate paragraph, using
+ 'class' rather than 'typename').
+
+ commit d4b47a09e9089bc661c4ad6bb882a46f4aae92b6
+ Author: Richard Smith
+ Date: Sat Aug 10 18:38:26 2019 -0700
+
+ [time.syn] Fix specifier order in declarations to match library style.
+ Rename parameter 't' to 'hms' to make declaration and later description
+ match.
+
+ commit 550553189899e1687629827dbb3fbf9c401f5d96
+ Author: Richard Smith
+ Date: Sat Aug 10 18:40:49 2019 -0700
+
+ [range.istream.iterator] Fix 'parent_' to the obviously-intended 'parent'.
+
+ commit 791a19a1d206c77b97e7725aa9a8ea779bf94d7a
+ Author: Richard Smith
+ Date: Sat Aug 10 19:08:16 2019 -0700
+
+ [chrono], [iostreams], [support] Fix 'template <' and 'typename T' to
+ the conventional 'template<' and 'class T' throughout the library.
+
+ commit ac72157b97d4b7b85ddb7ca412b5a4ee1806614d
+ Author: Richard Smith
+ Date: Sat Aug 10 19:11:57 2019 -0700
+
+ [cmp.object] Add missing template-head to function description.
+
+ commit b050fd474f11441942c88ef69b8622c8036656ac
+ Author: Richard Smith
+ Date: Sat Aug 10 19:26:09 2019 -0700
+
+ [re.submatch.op] Fix inconsistency between declaration and description
+ of sub_match operator<=>: remove 'constexpr' from declaration, and
+ change return type in definition from 'bool' to 'auto'.
+
+ commit 1335e42809151ecfdb671ea2aea1dab0c8d5db53
+ Author: Richard Smith
+ Date: Sat Aug 10 19:33:48 2019 -0700
+
+ [iterator.concept.sizedsentinel] Avoid potential ambiguity between
+ inclusive and exclusive "or" by using "and/or".
+
+ commit 1b2bfda98c20ecd71a35b7321662f8f976134793
+ Author: Richard Smith
+ Date: Sat Aug 10 19:51:39 2019 -0700
+
+ [atomic] Remove invalid trailing 'const' from non-member function
+ atomic_flag_notify_all.
+
+ commit afed449f0fa1324001260c9d658f6d05da90a9f9
+ Author: Richard Smith
+ Date: Sat Aug 10 19:55:21 2019 -0700
+
+ [thread.sema.cnt] "Class" -> "Class template" in description of a class
+ template.
+
+ commit 7445919de1bcf4780693b7870a245486839587ea
+ Author: Richard Smith
+ Date: Sat Aug 10 19:58:05 2019 -0700
+
+ [thread.latch] Remove italics from non-definition of "latch".
+
+ commit 224384ab43e4e9829eee5d97f09218850026d342
+ Author: Richard Smith
+ Date: Sat Aug 10 20:05:07 2019 -0700
+
+ [atomic] Consistently order atomic<...> and atomic_ref<...> definitions:
+ keep compare_exchange and fetch_* operations together because the latter
+ are a particular form of compare_exchange operation.
+
+ commit 8644a2ce2faa6e979e224f069e4ca48238ea8570
+ Author: Richard Smith
+ Date: Mon Aug 12 16:47:06 2019 -0700
+
+ [atomics.syn], [atomics.flag] Clean up presentation around
+ ATOMIC_FLAG_INIT.
+
+ * Add some vertical whitespace in description of atomic_flag operations.
+ * Reorder ATOMIC_FLAG_INIT earlier in synopsis for consistency.
+ * Add proper item description for ATOMIC_FLAG_INIT.
+ * Remove repetition of declarations of atomic_flag non-member functions
+ and the ATOMIC_FLAG_INIT macro from [atomics.flag].
+
+ commit 2c1ab9775cc53e848a1efff4f9976455538994d4
+ Author: Richard Smith
+ Date: Mon Aug 12 16:56:24 2019 -0700
+
+ [string.erasure] Following the guidance given by P0980R1, and after
+ consultation with LWG chair, mark the std::erase and std::erase_if
+ overloads for std::basic_string as constexpr in addition to those
+ explicitly called out by the wording paper.
+
+ commit 009d46f9b057a635383dce8bbcad121c86f1d306
+ Author: Richard Smith
+ Date: Tue Aug 13 18:16:48 2019 -0700
+
+ [over.match.class.deduct] Replace "therefrom" with a more common
+ construction, and more directly talk about the class template for which
+ we are ultimately performing deduction.
+
+ commit ac9189f351bf0407a31968199c22274ff41fe9e7
+ Author: Richard Smith
+ Date: Tue Aug 13 18:21:14 2019 -0700
+
+ [diff.cpp17.class] Remove redundant cross-reference.
+
+ commit ba642aa699973f21613cbe3e6a0b6d9c1e0f2e6a
+ Author: Richard Smith
+ Date: Wed Aug 14 16:16:48 2019 -0700
+
+ [ostream] Add back the comments that P1423R3 requested, but now as a
+ note.
+
+ commit 37ccff2c0e9be3a62fcd85b55e4d05c2b312335f
+ Author: Richard Smith
+ Date: Wed Aug 14 16:48:00 2019 -0700
+
+ [dcl.fct.def.default] Clarify that the rule concerning how the type of a
+ defaulted function can differ from the type of an implicitly-declared
+ function only applies to the functions that are implicitly declared.
+
+ commit 42ee105f5804a74bb15960944ee7fe1cd4420e04
+ Author: Richard Smith
+ Date: Wed Aug 14 16:56:23 2019 -0700
+
+ [over.match.class.deduct] Clarify that an incomplete class type is never
+ treated as being an aggregate.
+
+ commit fce4ac9764e10042bd8d0bb4152e83d697c8bdae
+ Author: Richard Smith
+ Date: Wed Aug 14 17:02:06 2019 -0700
+
+ [dcl.typedef] Split paragraph on typedef name for linkage into two parts
+ (how you know when you have one, and the restrictions on types that have
+ one).
+
+ commit 90a29c08bc80091c093937a7d96ce28df5ceee44
+ Author: Richard Smith
+ Date: Wed Aug 14 17:21:15 2019 -0700
+
+ [conv.qual] Avoid bouncing back and forth between subscripts and regular
+ scripts for T1 and T2, and add missing definition for cv^j_i and P^j_i.
+
+ commit 03bcd8d3e5ece969af846e23cd451549185fdac4
+ Author: Jens Maurer
+ Date: Thu Aug 8 01:07:54 2019 +0200
+
+ [expr.ass] Remove mention of class types.
+
+ commit 173905005c2c419548418239518db72bfda9dd9a
+ Author: Richard Smith
+ Date: Wed Aug 14 17:48:53 2019 -0700
+
+ [dcl.attr.nodiscard] Make the constructor case better parallel the
+ function case by duplicating the implied "through a reachable
+ declaration" wording.
+
+ commit acbe5e429499d0eaf6c118f0bca4bbc26830bcaf
+ Author: Davis Herring
+ Date: Mon Aug 12 12:07:06 2019 -0600
+
+ [dcl.attr.nodiscard], [diff.cpp17.dcl.dcl] Fix grammar/usage
+
+ commit 5aa019b19118973d99a2b2282d3f6264da81c9d8
+ Author: Davis Herring
+ Date: Mon Aug 12 12:13:20 2019 -0600
+
+ [basic.def.odr] Clean up new bullets
+
+ commit eb443396ac48b4e2ac9c6be0d9ec6bf9dda107eb
+ Author: Davis Herring
+ Date: Mon Aug 12 12:27:41 2019 -0600
+
+ [module.reach], [over.ics.rank] Fix punctuation
+
+ commit 37d2e59e8deb847f5ebdade20604bdf5c119649a
+ Author: Davis Herring
+ Date: Mon Aug 12 14:14:50 2019 -0600
+
+ [expr.ass] Improve preposition
+
+ commit 4a0fd9aa43a0d63d6fe875b886cdea8ec24d7f9d
+ Author: Davis Herring
+ Date: Mon Aug 12 15:03:56 2019 -0600
+
+ [over.match.class.deduct] Supply missing word
+
+ commit 05c786cc68bf14a828cc59f32d34fae2baf33794
+ Author: Davis Herring
+ Date: Tue Aug 13 00:49:41 2019 -0600
+
+ [expr.new] Use typical \iref
+
+ commit fc1863291a3f62a684d9bffa51fdc2837e9edcd0
+ Author: Davis Herring
+ Date: Tue Aug 13 14:55:54 2019 -0600
+
+ [class.spaceship] Remove vacuous conversion
+
+ The synthesized three-way comparison always produces a value of type R
+
+ commit 80f2c46251f07abf422cdd86a3f3d30c47fda587
+ Author: Davis Herring
+ Date: Tue Aug 13 14:59:46 2019 -0600
+
+ [over.match.class.deduct] Fix terminology
+
+ An element with a dependent type might not be a subaggregate
+ Add cross-reference
+
+ commit bfa0e698359d44e8a2b0a056e13e908a8185e296
+ Author: Davis Herring
+ Date: Tue Aug 13 15:02:06 2019 -0600
+
+ [over.match.class.deduct] Use "deduces"
+
+ ...for consistency in example
+
+ commit 174edca593a860440860f95c3ee61aa739e2afdc
+ Author: Davis Herring
+ Date: Tue Aug 13 23:41:02 2019 -0600
+
+ [over.match.class.deduct] Simplify example
+
+ commit a9f901af95f16540444144a397fe3b598ae2961b
+ Author: Richard Smith
+ Date: Wed Aug 14 17:51:44 2019 -0700
+
+ [class.dtor] "The defaulted destructor" -> "A defaulted destructor",
+ since the destructor for a class might not be defaulted.
diff --git a/papers/n4830.pdf b/papers/n4830.pdf
new file mode 100644
index 0000000000..9342aa6d06
Binary files /dev/null and b/papers/n4830.pdf differ
diff --git a/source/algorithms.tex b/source/algorithms.tex
index f68441ae72..c2518033ec 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
@@ -242,9 +242,9 @@
\tcode{ranges::next(i, s)}.
\pnum
-Overloads of algorithms that take \libconcept{Range} arguments\iref{range.range}
+Overloads of algorithms that take \libconcept{range} arguments\iref{range.range}
behave as if they are implemented by calling \tcode{ranges::begin} and
-\tcode{ranges::end} on the \libconcept{Range}(s) and
+\tcode{ranges::end} on the \libconcept{range}(s) and
dispatching to the overload in namespace \tcode{ranges}
that takes separate iterator and sentinel arguments.
@@ -262,6 +262,7 @@
\tcode{for_each_result},
\tcode{minmax_result},
\tcode{mismatch_result},
+\tcode{next_permutation_result},
\tcode{copy_result}, and
\tcode{partition_copy_result}
have the template parameters, data members, and special members specified below.
@@ -438,6 +439,7 @@
in a thread of execution implicitly created by the library
to support parallel algorithm execution.
If the threads of execution created by \tcode{thread}\iref{thread.thread.class}
+or \tcode{jthread}\iref{thread.jthread.class}
provide concurrent forward progress guarantees\iref{intro.progress},
then a thread of execution implicitly created by the library will provide
parallel forward progress guarantees;
@@ -617,11 +619,11 @@
ForwardIterator first, ForwardIterator last, Predicate pred);
namespace ranges {
- template S, class Proj = identity,
- IndirectUnaryPredicate> Pred>
+ template S, class Proj = identity,
+ indirect_unary_predicate> Pred>
constexpr bool all_of(I first, S last, Pred pred, Proj proj = {});
- template, Proj>> Pred>
+ template, Proj>> Pred>
constexpr bool all_of(R&& r, Pred pred, Proj proj = {});
}
@@ -633,11 +635,11 @@
ForwardIterator first, ForwardIterator last, Predicate pred);
namespace ranges {
- template S, class Proj = identity,
- IndirectUnaryPredicate> Pred>
+ template S, class Proj = identity,
+ indirect_unary_predicate> Pred>
constexpr bool any_of(I first, S last, Pred pred, Proj proj = {});
- template, Proj>> Pred>
+ template, Proj>> Pred>
constexpr bool any_of(R&& r, Pred pred, Proj proj = {});
}
@@ -649,11 +651,11 @@
ForwardIterator first, ForwardIterator last, Predicate pred);
namespace ranges {
- template S, class Proj = identity,
- IndirectUnaryPredicate> Pred>
+ template S, class Proj = identity,
+ indirect_unary_predicate> Pred>
constexpr bool none_of(I first, S last, Pred pred, Proj proj = {});
- template, Proj>> Pred>
+ template, Proj>> Pred>
constexpr bool none_of(R&& r, Pred pred, Proj proj = {});
}
@@ -671,24 +673,24 @@
[[no_unique_address]] F fun;
template
- requires ConvertibleTo && ConvertibleTo
+ requires convertible_to && convertible_to
operator for_each_result() const & {
return {in, fun};
}
template
- requires ConvertibleTo && ConvertibleTo
+ requires convertible_to && convertible_to
operator for_each_result() && {
return {std::move(in), std::move(fun)};
}
};
- template S, class Proj = identity,
- IndirectUnaryInvocable> Fun>
+ template S, class Proj = identity,
+ indirectly_unary_invocable> Fun>
constexpr for_each_result
for_each(I first, S last, Fun f, Proj proj = {});
- template, Proj>> Fun>
+ template, Proj>> Fun>
constexpr for_each_result, Fun>
for_each(R&& r, Fun f, Proj proj = {});
}
@@ -723,25 +725,25 @@
Predicate pred);
namespace ranges {
- template S, class T, class Proj = identity>
- requires IndirectRelation, const T*>
+ template S, class T, class Proj = identity>
+ requires indirect_relation, const T*>
constexpr I find(I first, S last, const T& value, Proj proj = {});
- template
- requires IndirectRelation, Proj>, const T*>
+ template
+ requires indirect_relation, Proj>, const T*>
constexpr safe_iterator_t
find(R&& r, const T& value, Proj proj = {});
- template S, class Proj = identity,
- IndirectUnaryPredicate> Pred>
+ template S, class Proj = identity,
+ indirect_unary_predicate> Pred>
constexpr I find_if(I first, S last, Pred pred, Proj proj = {});
- template, Proj>> Pred>
+ template, Proj>> Pred>
constexpr safe_iterator_t
find_if(R&& r, Pred pred, Proj proj = {});
- template S, class Proj = identity,
- IndirectUnaryPredicate> Pred>
+ template S, class Proj = identity,
+ indirect_unary_predicate> Pred>
constexpr I find_if_not(I first, S last, Pred pred, Proj proj = {});
- template, Proj>> Pred>
+ template, Proj>> Pred>
constexpr safe_iterator_t
find_if_not(R&& r, Pred pred, Proj proj = {});
}
@@ -770,15 +772,15 @@
BinaryPredicate pred);
namespace ranges {
- template S1, ForwardIterator I2, Sentinel S2,
+ template S1, forward_iterator I2, sentinel_for S2,
class Pred = ranges::equal_to, class Proj1 = identity, class Proj2 = identity>
- requires IndirectlyComparable
+ requires indirectly_comparable
constexpr subrange
find_end(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = {},
Proj1 proj1 = {}, Proj2 proj2 = {});
- template
- requires IndirectlyComparable, iterator_t, Pred, Proj1, Proj2>
+ requires indirectly_comparable, iterator_t, Pred, Proj1, Proj2>
constexpr safe_subrange_t
find_end(R1&& r1, R2&& r2, Pred pred = {},
Proj1 proj1 = {}, Proj2 proj2 = {});
@@ -808,16 +810,16 @@
BinaryPredicate pred);
namespace ranges {
- template S1, ForwardIterator I2, Sentinel S2,
+ template S1, forward_iterator I2, sentinel_for S2,
class Proj1 = identity, class Proj2 = identity,
- IndirectRelation,
- projected> Pred = ranges::equal_to>
+ indirect_relation,
+ projected> Pred = ranges::equal_to>
constexpr I1 find_first_of(I1 first1, S1 last1, I2 first2, S2 last2,
Pred pred = {},
Proj1 proj1 = {}, Proj2 proj2 = {});
- template, Proj1>,
- projected, Proj2>> Pred = ranges::equal_to>
+ template, Proj1>,
+ projected, Proj2>> Pred = ranges::equal_to>
constexpr safe_iterator_t
find_first_of(R1&& r1, R2&& r2,
Pred pred = {},
@@ -843,12 +845,12 @@
BinaryPredicate pred);
namespace ranges {
- template S, class Proj = identity,
- IndirectRelation> Pred = ranges::equal_to>
+ template S, class Proj = identity,
+ indirect_relation> Pred = ranges::equal_to>
constexpr I adjacent_find(I first, S last, Pred pred = {},
Proj proj = {});
- template, Proj>> Pred = ranges::equal_to>
+ template, Proj>> Pred = ranges::equal_to>
constexpr safe_iterator_t
adjacent_find(R&& r, Pred pred = {}, Proj proj = {});
}
@@ -870,21 +872,21 @@
ForwardIterator first, ForwardIterator last, Predicate pred);
namespace ranges {
- template S, class T, class Proj = identity>
- requires IndirectRelation, const T*>
+ template S, class T, class Proj = identity>
+ requires indirect_relation, const T*>
constexpr iter_difference_t
count(I first, S last, const T& value, Proj proj = {});
- template
- requires IndirectRelation, Proj>, const T*>
- constexpr iter_difference_t>
+ template
+ requires indirect_relation, Proj>, const T*>
+ constexpr range_difference_t
count(R&& r, const T& value, Proj proj = {});
- template S, class Proj = identity,
- IndirectUnaryPredicate> Pred>
+ template S, class Proj = identity,
+ indirect_unary_predicate> Pred>
constexpr iter_difference_t
count_if(I first, S last, Pred pred, Proj proj = {});
- template, Proj>> Pred>
- constexpr iter_difference_t>
+ template, Proj>> Pred>
+ constexpr range_difference_t
count_if(R&& r, Pred pred, Proj proj = {});
}
@@ -937,29 +939,29 @@
[[no_unique_address]] I2 in2;
template
- requires ConvertibleTo && ConvertibleTo
+ requires convertible_to && convertible_to
operator mismatch_result() const & {
return {in1, in2};
}
template
- requires ConvertibleTo && ConvertibleTo
+ requires convertible_to && convertible_to
operator mismatch_result() && {
return {std::move(in1), std::move(in2)};
}
};
- template S1, InputIterator I2, Sentinel S2,
+ template S1, input_iterator I2, sentinel_for S2,
class Proj1 = identity, class Proj2 = identity,
- IndirectRelation,
- projected