diff --git a/papers/n4827.html b/papers/n4827.html
new file mode 100644
index 0000000000..88208bda31
--- /dev/null
+++ b/papers/n4827.html
@@ -0,0 +1,965 @@
+
N4827
+N4827 Editors' Report -- Programming Languages -- C++
+
+2019-08-06
+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.
+
+Thanks to all those who have submitted editorial
+issues
+and to those who have provided pull requests with fixes.
+
+New papers
+
+
+- N4828 is the committee draft for C++20. It replaces N4820.
+- N4827 is this Editors' Report.
+
+
+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"and accept the changes therein for default arguments and classes having typedef names for linkage purposes as Defect Reports.
+
+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
+
+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 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<=>
.
+
+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]
+
+
+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 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 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 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 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 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 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 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 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 cc421307fb4ce393e7ab1dcf0d0f1298d163fbe0
+Author: Yehezkel Bernat <yehezkelshb@gmail.com>
+Date: Sun Jul 21 22:16:23 2019 +0300
+
+ Delete irrelevant copy-paste from previous section
+
+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 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 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 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 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 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 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 1f2669e287959ce650ffcafb1d413ef6ea084253
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 17:21:06 2019 -0700
+
+ [everywhere] Rename exposition-only concept 'same-impl' to 'same-as-impl'.
+
+commit 731832237195a5d2dff8f6185efcd0525198da64
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 16:55:09 2019 -0700
+
+ [everywhere] Rename exposition-only concept 'Advanceable' to 'advanceable'.
+
+commit 5c00353357befbb92b93d03c9b3d8d96c0a5c3fc
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 16:54:14 2019 -0700
+
+ [everywhere] Rename exposition-only concept 'Decrementable' to 'decrementable'.
+
+commit 80324ff7385730b04089bf4c4f654e5d5617abd0
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Tue Aug 6 16:48:25 2019 -0700
+
+ [expr.new], [uninitialized.copy], [uninitialized_move], [memory.syn]
+ Rename non-normative names that collide with new concept names.
+
+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 7f4e95e3296b31c23bfb358f31294d384a955e3b
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Sat Aug 3 08:38:34 2019 +0200
+
+ [support.srcloc] Fix comments in example.
+
+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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 3f761c76b5daf9f1a75695226514c323ba6619f0
+Author: Jens Maurer <Jens.Maurer@gmx.net>
+Date: Thu Aug 1 10:50:09 2019 +0200
+
+ [numbers.syn] Use 'namespace std::numbers'.
+
+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 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 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 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 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 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 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 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 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 19d21c3940d33912f1daedee0f14c0f931e389c6
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Thu Aug 1 18:20:08 2019 -0700
+
+ [format.string] Fix whitespace collapse in format alignment example.
+
+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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 dc45e8c329eeb0076d074fa671c2be2fc605555a
+Author: Richard Smith <richard@metafoo.co.uk>
+Date: Mon Jul 22 03:18:33 2019 +0200
+
+ [class.spaceship] Remove incorrect note.
+
+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 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 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 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 51c5b01217799fdfa754179c20af888ec8c1889d
+Author: Casey Carter <Casey@Carter.net>
+Date: Wed Jul 10 00:40:19 2019 -0700
+
+ [temp.constr.order] Remove extraneous "the". (#2964)
+
+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 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 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 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 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 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 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)
+
diff --git a/papers/n4827.md b/papers/n4827.md
new file mode 100644
index 0000000000..a421048b2a
--- /dev/null
+++ b/papers/n4827.md
@@ -0,0 +1,827 @@
+# N4827 Editors' Report -- Programming Languages -- C++
+
+2019-08-06
+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.
+
+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
+
+ * [N4828](http://wg21.link/n4828) is the committee draft for C++20. It replaces [N4820](http://wg21.link/n4820).
+ * N4827 is this Editors' Report.
+
+## 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)and accept the changes therein for default arguments and classes having typedef names for linkage purposes as Defect Reports.
+
+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
+
+### 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 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<=>`.
+
+### 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]
+
+## 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...n4828).
+
+ 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 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 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 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 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 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 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 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 cc421307fb4ce393e7ab1dcf0d0f1298d163fbe0
+ Author: Yehezkel Bernat
+ Date: Sun Jul 21 22:16:23 2019 +0300
+
+ Delete irrelevant copy-paste from previous section
+
+ 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 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 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 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 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 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 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 1f2669e287959ce650ffcafb1d413ef6ea084253
+ Author: Richard Smith
+ Date: Tue Aug 6 17:21:06 2019 -0700
+
+ [everywhere] Rename exposition-only concept 'same-impl' to 'same-as-impl'.
+
+ commit 731832237195a5d2dff8f6185efcd0525198da64
+ Author: Richard Smith
+ Date: Tue Aug 6 16:55:09 2019 -0700
+
+ [everywhere] Rename exposition-only concept 'Advanceable' to 'advanceable'.
+
+ commit 5c00353357befbb92b93d03c9b3d8d96c0a5c3fc
+ Author: Richard Smith
+ Date: Tue Aug 6 16:54:14 2019 -0700
+
+ [everywhere] Rename exposition-only concept 'Decrementable' to 'decrementable'.
+
+ commit 80324ff7385730b04089bf4c4f654e5d5617abd0
+ Author: Richard Smith
+ Date: Tue Aug 6 16:48:25 2019 -0700
+
+ [expr.new], [uninitialized.copy], [uninitialized_move], [memory.syn]
+ Rename non-normative names that collide with new concept names.
+
+ 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 7f4e95e3296b31c23bfb358f31294d384a955e3b
+ Author: Jens Maurer
+ Date: Sat Aug 3 08:38:34 2019 +0200
+
+ [support.srcloc] Fix comments in example.
+
+ 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 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 f0256ab73cd6a9fae611af95526d16fe59968d4c
+ Author: Richard Smith
+ Date: Mon Aug 5 23:08:59 2019 -0700
+
+ [range.drop.view] Fix typo "requirement" -> "required".
+
+ 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 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 906fd4d0519994e06659ce066c8252df186c23b9
+ Author: Richard Smith
+ Date: Mon Aug 5 17:57:35 2019 -0700
+
+ [func.require] Convert restrictive 'which' to 'that'.
+
+ 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 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 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 90f64792ec7d5372a093d3bea69dffff2f7af28a
+ Author: Richard Smith
+ Date: Mon Aug 5 13:48:59 2019 -0700
+
+ Rename _s to -s in placeholder names per editorial guidelines.
+
+ 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 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 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 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 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 3f761c76b5daf9f1a75695226514c323ba6619f0
+ Author: Jens Maurer
+ Date: Thu Aug 1 10:50:09 2019 +0200
+
+ [numbers.syn] Use 'namespace std::numbers'.
+
+ commit 14aa4ed0d323c163f0559bd7c8555d77f2dc8093
+ Author: Jens Maurer
+ Date: Tue Jul 30 16:12:59 2019 +0200
+
+ [math.constants] Expand 'math' to 'mathematical'.
+
+ commit c7ada4d28ae7be82ef64104617e216fd738a4d0f
+ Author: Jens Maurer
+ Date: Tue Jul 30 16:07:16 2019 +0200
+
+ [numbers] Use 'template', not 'typename'.
+
+ 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 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 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 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 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 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 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 19d21c3940d33912f1daedee0f14c0f931e389c6
+ Author: Richard Smith
+ Date: Thu Aug 1 18:20:08 2019 -0700
+
+ [format.string] Fix whitespace collapse in format alignment example.
+
+ 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 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 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 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 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 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 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 fb97956bc9eee5a50c10df9148d9422e260e352c
+ Author: Richard Smith
+ Date: Wed Jul 31 17:28:28 2019 -0700
+
+ [format.formatter] Add subclause heading to avoid hanging paragraphs.
+
+ 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 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 b3b7d37c073051826c21c231bd386c10d64433dc
+ Author: Jens Maurer
+ Date: Fri Aug 2 22:09:14 2019 +0200
+
+ [class.copy.elision] Add cross-reference, fix example.
+
+ 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 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 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 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 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 47539b965a84f69c548fe043a632af17db3cb315
+ Author: Richard Smith
+ Date: Fri Aug 2 15:49:39 2019 -0700
+
+ [conv.qual] Move note after the rule that implies it.
+
+ 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 1fbc1c315008152770eea8bd383aa2a4fa47cfd5
+ Author: Jens Maurer
+ Date: Fri Jul 26 16:56:13 2019 +0200
+
+ [basic.def.odr] Turn long comma-separate list into bullets.
+
+ 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 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 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 dc45e8c329eeb0076d074fa671c2be2fc605555a
+ Author: Richard Smith
+ Date: Mon Jul 22 03:18:33 2019 +0200
+
+ [class.spaceship] Remove incorrect note.
+
+ 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 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 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 67db9422b6bc58f5399c7c019ec5ede28d8ac4f5
+ Author: Jens Maurer
+ Date: Fri Jun 28 17:01:54 2019 +0200
+
+ [expr.prim.req] Fix cross-reference for substituting into constraints.
+
+ commit 51c5b01217799fdfa754179c20af888ec8c1889d
+ Author: Casey Carter
+ Date: Wed Jul 10 00:40:19 2019 -0700
+
+ [temp.constr.order] Remove extraneous "the". (#2964)
+
+ 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 c635711cdd81346ad41c7861adb8035176fa236f
+ Author: Eelis
+ Date: Fri Jul 5 23:55:22 2019 +0200
+
+ [temp.constr.constr] Add missing period at end of sentence. (#2957)
+
+ commit 72cc844ef44ae47aebb1ad346146138d3279be9e
+ Author: Eelis
+ Date: Fri Jul 5 16:16:58 2019 +0200
+
+ [expr.reinterpret.cast] Properly capitalize full-sentence bullets. (#2956)
+
+ commit f54f306c3b9fad27e70766963840e3df14f20b28
+ Author: Jens Maurer
+ Date: Thu Jul 4 15:34:38 2019 +0200
+
+ [func.bind] Remove bogus 'shall's. (#2955)
+
+ 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 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 44ea29778d15cd5d9f2b5c706c6b3f4338548ec2
+ Author: Casey Carter
+ Date: Tue Jun 25 06:04:14 2019 -0700
+
+ [range.filter.sentinel] Correct typo in constructor Effects (#2937)
diff --git a/papers/n4828.pdf b/papers/n4828.pdf
new file mode 100644
index 0000000000..3cb6aff33a
Binary files /dev/null and b/papers/n4828.pdf differ
diff --git a/source/atomics.tex b/source/atomics.tex
index bcff1c26d8..762a8c77fc 100644
--- a/source/atomics.tex
+++ b/source/atomics.tex
@@ -1344,7 +1344,7 @@
\begin{itemdescr}
\effects Equivalent to:
-\tcode{return fetch_\placeholder{key}(operand) \placeholdernc{op} operand;}
+\tcode{return fetch_\placeholdernc{key}(operand) \placeholdernc{op} operand;}
\end{itemdescr}
\rSec2[atomics.ref.pointer]{Partial specialization for pointers}
@@ -1444,7 +1444,7 @@
\begin{itemdescr}
\pnum
\effects Equivalent to:
-\tcode{return fetch_\placeholder{key}(operand) \placeholdernc{op} operand;}
+\tcode{return fetch_\placeholdernc{key}(operand) \placeholdernc{op} operand;}
\end{itemdescr}
\rSec2[atomics.ref.memop]{Member operators
@@ -2213,7 +2213,7 @@
\begin{itemdescr}
\pnum
-\effects Equivalent to: \tcode{return fetch_\placeholder{key}(operand) \placeholder{op} operand;}
+\effects Equivalent to: \tcode{return fetch_\placeholdernc{key}(operand) \placeholder{op} operand;}
\end{itemdescr}
\rSec2[atomics.types.float]{Specializations for floating-point types}
@@ -2358,7 +2358,7 @@
\begin{itemdescr}
\pnum
\effects
-Equivalent to: \tcode{return fetch_\placeholder{key}(operand) \placeholder{op} operand;}
+Equivalent to: \tcode{return fetch_\placeholdernc{key}(operand) \placeholder{op} operand;}
\pnum
\remarks
@@ -2510,7 +2510,7 @@
\begin{itemdescr}
\pnum
-\effects Equivalent to: \tcode{return fetch_\placeholder{key}(operand) \placeholder{op} operand;}
+\effects Equivalent to: \tcode{return fetch_\placeholdernc{key}(operand) \placeholder{op} operand;}
\end{itemdescr}
\rSec2[atomics.types.memop]{Member operators common to integers and pointers to objects}
diff --git a/source/concepts.tex b/source/concepts.tex
index b94f4cce6f..561d728cc4 100644
--- a/source/concepts.tex
+++ b/source/concepts.tex
@@ -279,7 +279,7 @@
concept @\placeholdernc{same-as-impl}@ = is_same_v; // \expos
template
- concept same_as = @\placeholdernc{same-as-impl}@ && @\placeholdernc{same-as-impl}@;
+ concept same_as = @\placeholder{same-as-impl}@ && @\placeholder{same-as-impl}@;
\end{itemdecl}
\begin{itemdescr}
diff --git a/source/config.tex b/source/config.tex
index 28aceaecd5..48e80b9fc3 100644
--- a/source/config.tex
+++ b/source/config.tex
@@ -1,7 +1,7 @@
%!TEX root = std.tex
%%--------------------------------------------------
%% Version numbers
-\newcommand{\docno}{Dxxxx}
+\newcommand{\docno}{N4828}
\newcommand{\prevdocno}{N4820}
\newcommand{\cppver}{201703L}
diff --git a/source/containers.tex b/source/containers.tex
index 24b4216aaf..7ca1b8cdb9 100644
--- a/source/containers.tex
+++ b/source/containers.tex
@@ -6251,7 +6251,7 @@
using reverse_iterator = std::reverse_iterator;
using const_reverse_iterator = std::reverse_iterator;
using node_type = @\unspec@;
- using insert_return_type = @\placeholdernc{insert-return-type}@;
+ using insert_return_type = @\placeholder{insert-return-type}@;
class value_compare {
friend class map;
@@ -7116,7 +7116,7 @@
using reverse_iterator = std::reverse_iterator;
using const_reverse_iterator = std::reverse_iterator;
using node_type = @\unspec@;
- using insert_return_type = @\placeholdernc{insert-return-type}@;
+ using insert_return_type = @\placeholder{insert-return-type}@;
// \ref{set.cons}, construct/copy/destroy
set() : set(Compare()) { }
@@ -7802,7 +7802,7 @@
using local_iterator = @\impdefx{type of \tcode{unordered_map::local_iterator}}@; // see \ref{container.requirements}
using const_local_iterator = @\impdefx{type of \tcode{unordered_map::const_local_iterator}}@; // see \ref{container.requirements}
using node_type = @\unspec@;
- using insert_return_type = @\placeholdernc{insert-return-type}@;
+ using insert_return_type = @\placeholder{insert-return-type}@;
// \ref{unord.map.cnstr}, construct/copy/destroy
unordered_map();
@@ -8754,7 +8754,7 @@
using local_iterator = @\impdefx{type of \tcode{unordered_set::local_iterator}}@; // see \ref{container.requirements}
using const_local_iterator = @\impdefx{type of \tcode{unordered_set::const_local_iterator}}@; // see \ref{container.requirements}
using node_type = @\unspec@;
- using insert_return_type = @\placeholdernc{insert-return-type}@;
+ using insert_return_type = @\placeholder{insert-return-type}@;
// \ref{unord.set.cnstr}, construct/copy/destroy
unordered_set();
diff --git a/source/iterators.tex b/source/iterators.tex
index 9e95e92656..0bb5ed04fa 100644
--- a/source/iterators.tex
+++ b/source/iterators.tex
@@ -38,7 +38,7 @@
namespace std {
template using @\placeholder{with-reference}@ = T&; // \expos
template concept @\placeholder{can-reference}@ // \expos
- = requires { typename @\placeholdernc{with-reference}@; };
+ = requires { typename @\placeholder{with-reference}@; };
template concept @\placeholder{dereferenceable}@ // \expos
= requires(T& t) {
{ *t } -> @\placeholder{can-reference}@; // not required to be equality-preserving
@@ -1293,7 +1293,7 @@
default_constructible && movable &&
requires(I i) {
typename iter_difference_t;
- requires @\placeholdernc{is-signed-integer-like}@>;
+ requires @\placeholder{is-signed-integer-like}@>;
{ ++i } -> same_as; // not required to be equality-preserving
i++; // not required to be equality-preserving
};
@@ -1397,9 +1397,9 @@
if it is an unsigned-integer-class type.
\pnum
-\tcode{\placeholdernc{is-integer-like}} is \tcode{true}
+\tcode{\placeholder{is-integer-like}} is \tcode{true}
if and only if \tcode{I} is an integer-like type.
-\tcode{\placeholdernc{is-signed-integer-like}} is \tcode{true}
+\tcode{\placeholder{is-signed-integer-like}} is \tcode{true}
if and only if I is a signed-integer-like type.
\pnum
@@ -4869,12 +4869,12 @@
\item
Otherwise, equivalent to:
-\tcode{return \placeholder{proxy}(*get(v_));} where
+\tcode{return \placeholdernc{proxy}(*get(v_));} where
\tcode{\placeholder{proxy}} is the exposition-only class:
\begin{codeblock}
class @\placeholder{proxy}@ {
iter_value_t keep_;
- @\placeholder{proxy}@(iter_reference_t&& x)
+ @\placeholdernc{proxy}@(iter_reference_t&& x)
: keep_(std::move(x)) {}
public:
const iter_value_t* operator->() const {
@@ -6035,7 +6035,7 @@
class istreambuf_iterator::@\placeholder{proxy}@ { // \expos
charT keep_;
basic_streambuf* sbuf_;
- @\placeholder{proxy}@(charT c, basic_streambuf* sbuf)
+ @\placeholdernc{proxy}@(charT c, basic_streambuf* sbuf)
: keep_(c), sbuf_(sbuf) { }
public:
charT operator*() { return keep_; }
@@ -6138,7 +6138,7 @@
\begin{itemdescr}
\pnum
\returns
-\tcode{\placeholder{proxy}(sbuf_->sbumpc(), sbuf_)}.
+\tcode{\placeholdernc{proxy}(sbuf_->sbumpc(), sbuf_)}.
\end{itemdescr}
\indexlibrarymember{equal}{istreambuf_iterator}%
diff --git a/source/lex.tex b/source/lex.tex
index 647871d028..c2c9371508 100644
--- a/source/lex.tex
+++ b/source/lex.tex
@@ -1844,7 +1844,7 @@
the form
\begin{codeblock}
-operator "" @\placeholder{X}@(@\placeholder{n}@ULL)
+operator "" @\placeholdernc{X}@(@\placeholder{n}@ULL)
\end{codeblock}
Otherwise, \placeholder{S} shall contain a raw literal operator
@@ -1853,7 +1853,7 @@
the literal \placeholder{L} is treated as a call of the form
\begin{codeblock}
-operator "" @\placeholder{X}@(@"\placeholder{n}{"}@)
+operator "" @\placeholdernc{X}@(@"\placeholder{n}{"}@)
\end{codeblock}
Otherwise (\placeholder{S} contains a numeric literal operator template),
@@ -1874,7 +1874,7 @@
the form
\begin{codeblock}
-operator "" @\placeholder{X}@(@\placeholder{f}@L)
+operator "" @\placeholdernc{X}@(@\placeholder{f}@L)
\end{codeblock}
Otherwise, \placeholder{S} shall contain a raw literal operator
@@ -1883,7 +1883,7 @@
the \grammarterm{literal} \placeholder{L} is treated as a call of the form
\begin{codeblock}
-operator "" @\placeholder{X}@(@"\placeholder{f}{"}@)
+operator "" @\placeholdernc{X}@(@"\placeholder{f}{"}@)
\end{codeblock}
Otherwise (\placeholder{S} contains a numeric literal operator template),
@@ -1914,7 +1914,7 @@
Otherwise, the literal \placeholder{L} is treated as a call of the form
\begin{codeblock}
-operator "" @\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@)
+operator "" @\placeholdernc{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@)
\end{codeblock}
\pnum
@@ -1926,7 +1926,7 @@
of the form
\begin{codeblock}
-operator "" @\placeholder{X}@(@\placeholder{ch}{}@)
+operator "" @\placeholdernc{X}@(@\placeholder{ch}{}@)
\end{codeblock}
\pnum
diff --git a/source/locales.tex b/source/locales.tex
index 11a2836e83..82d906933f 100644
--- a/source/locales.tex
+++ b/source/locales.tex
@@ -4712,7 +4712,7 @@
Each of these functions \tcode{\placeholder{F}}
returns the result of calling the corresponding
virtual member function
-\tcode{do_\placeholder{F}()}.
+\tcode{do_\placeholdernc{F}()}.
\rSec4[locale.moneypunct.virtuals]{Virtual functions}
diff --git a/source/numerics.tex b/source/numerics.tex
index edb32a16ef..be41864f9b 100644
--- a/source/numerics.tex
+++ b/source/numerics.tex
@@ -9626,12 +9626,12 @@
\item If \tcode{isfinite(t) \&\& a == b}, then \tcode{r == a}.
\item If \tcode{isfinite(t) || !isnan(t) \&\& b-a != 0}, then \tcode{!isnan(r)}.
\end{itemize}
-Let \tcode{\placeholder{CMP}(x,y)} be \tcode{1} if \tcode{x > y},
+Let \tcode{\placeholdernc{CMP}(x,y)} be \tcode{1} if \tcode{x > y},
\tcode{-1} if \tcode{x < y}, and \tcode{0} otherwise.
For any \tcode{t1} and \tcode{t2}, the product of
-\tcode{\placeholder{CMP}(lerp(a, b, t2), lerp(a, b, t1))},
-\tcode{\placeholder{CMP}(t2, t1)}, and
-\tcode{\placeholder{CMP}(b, a)}
+\tcode{\placeholdernc{CMP}(lerp(a, b, t2), lerp(a, b, t1))},
+\tcode{\placeholdernc{CMP}(t2, t1)}, and
+\tcode{\placeholdernc{CMP}(b, a)}
is non-negative.
\end{itemdescr}
diff --git a/source/ranges.tex b/source/ranges.tex
index c4d5a821d2..8e12bb47b1 100644
--- a/source/ranges.tex
+++ b/source/ranges.tex
@@ -761,7 +761,7 @@
};
template
- concept range = @\placeholdernc{range-impl}@;
+ concept range = @\placeholder{range-impl}@;
template
concept @\placeholder{forwarding-range}@ = // \expos
@@ -1239,11 +1239,11 @@
template
concept @\placeholdernc{pair-like-convertible-from}@ = // \expos
- !range && @\placeholdernc{pair-like}@ && constructible_from;
+ !range && @\placeholder{pair-like}@ && constructible_from;
template
concept @\placeholdernc{iterator-sentinel-pair}@ = // \expos
- !range && @\placeholdernc{pair-like}@ &&
+ !range && @\placeholder{pair-like}@ &&
sentinel_for, tuple_element_t<0, T>>;
template S = I, subrange_kind K =
@@ -1265,8 +1265,8 @@
constexpr subrange(I i, S s, @\placeholdernc{make-unsigned-like-t}@(iter_difference_t) n)
requires (K == subrange_kind::sized);
- template<@\placeholdernc{not-same-as}@ R>
- requires @\placeholdernc{forwarding-range}@ &&
+ template<@\placeholder{not-same-as}@ R>
+ requires @\placeholder{forwarding-range}@ &&
convertible_to, I> && convertible_to, S>
constexpr subrange(R&& r) requires (!StoreSize || sized_range);
@@ -1277,22 +1277,22 @@
: subrange{ranges::begin(r), ranges::end(r), n}
{}
- template<@\placeholdernc{not-same-as}@ PairLike>
- requires @\placeholdernc{pair-like-convertible-to}@
+ template<@\placeholder{not-same-as}@ PairLike>
+ requires @\placeholder{pair-like-convertible-to}@
constexpr subrange(PairLike&& r) requires (!StoreSize)
: subrange{std::get<0>(std::forward(r)),
std::get<1>(std::forward(r))}
{}
- template<@\placeholdernc{pair-like-convertible-to}@ PairLike>
+ template<@\placeholder{pair-like-convertible-to}@ PairLike>
constexpr subrange(PairLike&& r, @\placeholdernc{make-unsigned-like-t}@(iter_difference_t) n)
requires (K == subrange_kind::sized)
: subrange{std::get<0>(std::forward(r)),
std::get<1>(std::forward(r)), n}
{}
- template<@\placeholdernc{not-same-as}@ PairLike>
- requires @\placeholdernc{pair-like-convertible-from}@
+ template<@\placeholder{not-same-as}@ PairLike>
+ requires @\placeholder{pair-like-convertible-from}@
constexpr operator PairLike() const;
constexpr I begin() const;
@@ -1385,8 +1385,8 @@
\indexlibrary{\idxcode{subrange}!\idxcode{subrange}}%
\begin{itemdecl}
-template<@\placeholdernc{not-same-as}@ R>
- requires @\placeholdernc{forwarding-range}@ &&
+template<@\placeholder{not-same-as}@ R>
+ requires @\placeholder{forwarding-range}@ &&
convertible_to, I> && convertible_to, S>
constexpr subrange(R&& r) requires (!StoreSize || sized_range);
\end{itemdecl}
@@ -1403,8 +1403,8 @@
\indexlibrary{\idxcode{operator \placeholder{PairLike}}!\idxcode{subrange}}%
\begin{itemdecl}
-template<@\placeholdernc{not-same-as}@ PairLike>
- requires @\placeholdernc{pair-like-convertible-from}@
+template<@\placeholder{not-same-as}@ PairLike>
+ requires @\placeholder{pair-like-convertible-from}@
constexpr operator PairLike() const;
\end{itemdecl}
@@ -1654,7 +1654,7 @@
requires is_object_v
class single_view : public view_interface> {
private:
- @\placeholdernc{semiregular-box}@ value_; // \expos{} (see \ref{range.semi.wrap})
+ @\placeholder{semiregular-box}@ value_; // \expos{} (see \ref{range.semi.wrap})
public:
single_view() = default;
constexpr explicit single_view(const T& t);
@@ -1786,7 +1786,7 @@
@\seebelow@;
template
- requires @\placeholdernc{weakly-equality-comparable-with}@
+ requires @\placeholder{weakly-equality-comparable-with}@
class iota_view : public view_interface> {
private:
// \ref{range.iota.iterator}, class \tcode{iota_view::iterator}
@@ -1809,8 +1809,8 @@
};
template
- requires (!@\placeholdernc{is-integer-like}@ || !@\placeholdernc{is-integer-like}@ ||
- (@\placeholdernc{is-signed-integer-like}@ == @\placeholdernc{is-signed-integer-like}@))
+ requires (!@\placeholder{is-integer-like}@ || !@\placeholder{is-integer-like}@ ||
+ (@\placeholder{is-signed-integer-like}@ == @\placeholder{is-signed-integer-like}@))
iota_view(W, Bound) -> iota_view;
}
\end{codeblock}
@@ -1875,7 +1875,7 @@
\begin{itemdecl}
template
concept @\placeholder{advanceable}@ =
- @\placeholdernc{decrementable}@ && totally_ordered &&
+ @\placeholder{decrementable}@ && totally_ordered &&
requires(I i, const I j, const @\placeholdernc{IOTA-DIFF-T}@(I) n) {
{ i += n } -> same_as;
{ i -= n } -> same_as;
@@ -1990,7 +1990,7 @@
\pnum
\effects Equivalent to:
\begin{codeblock}
-if constexpr (@\placeholdernc{is-integer-like}@ && @\placeholdernc{is-integer-like}@)
+if constexpr (@\placeholder{is-integer-like}@ && @\placeholder{is-integer-like}@)
return (value_ < 0)
? ((bound_ < 0)
? @\placeholdernc{make-unsigned-like}@(-value_) - @\placeholdernc{make-unsigned-like}@(-bound_)
@@ -2030,15 +2030,15 @@
constexpr void operator++(int);
constexpr iterator operator++(int) requires incrementable;
- constexpr iterator& operator--() requires @\placeholdernc{decrementable}@;
- constexpr iterator operator--(int) requires @\placeholdernc{decrementable}@;
+ constexpr iterator& operator--() requires @\placeholder{decrementable}@;
+ constexpr iterator operator--(int) requires @\placeholder{decrementable}@;
constexpr iterator& operator+=(difference_type n)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
constexpr iterator& operator-=(difference_type n)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
constexpr W operator[](difference_type n) const
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
friend constexpr bool operator==(const iterator& x, const iterator& y)
requires equality_comparable;
@@ -2056,14 +2056,14 @@
requires totally_ordered && three_way_comparable;
friend constexpr iterator operator+(iterator i, difference_type n)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
friend constexpr iterator operator+(difference_type n, iterator i)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
friend constexpr iterator operator-(iterator i, difference_type n)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
friend constexpr difference_type operator-(const iterator& x, const iterator& y)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
};
}
\end{codeblock}
@@ -2152,7 +2152,7 @@
\indexlibrary{\idxcode{operator\dcr}!\idxcode{iota_view::iterator}}
\begin{itemdecl}
-constexpr iterator& operator--() requires @\placeholdernc{decrementable}@;
+constexpr iterator& operator--() requires @\placeholder{decrementable}@;
\end{itemdecl}
\begin{itemdescr}
@@ -2166,7 +2166,7 @@
\indexlibrary{\idxcode{operator\dcr}!\idxcode{iota_view::iterator}}
\begin{itemdecl}
-constexpr iterator operator--(int) requires @\placeholdernc{decrementable}@;
+constexpr iterator operator--(int) requires @\placeholder{decrementable}@;
\end{itemdecl}
\begin{itemdescr}
@@ -2182,14 +2182,14 @@
\indexlibrary{\idxcode{operator+=}!\idxcode{iota_view::iterator}}
\begin{itemdecl}
constexpr iterator& operator+=(difference_type n)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
\end{itemdecl}
\begin{itemdescr}
\pnum
\effects Equivalent to:
\begin{codeblock}
-if constexpr (@\placeholdernc{is-integer-like}@ && !@\placeholdernc{is-signed-integer-like}@) {
+if constexpr (@\placeholder{is-integer-like}@ && !@\placeholder{is-signed-integer-like}@) {
if (n >= difference_type(0))
value_ += static_cast(n);
else
@@ -2204,14 +2204,14 @@
\indexlibrary{\idxcode{operator-=}!\idxcode{iota_view::iterator}}
\begin{itemdecl}
constexpr iterator& operator-=(difference_type n)
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@;
\end{itemdecl}
\begin{itemdescr}
\pnum
\effects Equivalent to:
\begin{codeblock}
-if constexpr (@\placeholdernc{is-integer-like}@ && !@\placeholdernc{is-signed-integer-like}@) {
+if constexpr (@\placeholder{is-integer-like}@ && !@\placeholder{is-signed-integer-like}@) {
if (n >= difference_type(0))
value_ -= static_cast(n);
else
@@ -2226,7 +2226,7 @@
\indexlibrary{\idxcode{operator[]}!\idxcode{iota_view::iterator}}
\begin{itemdecl}
constexpr W operator[](difference_type n) const
- requires @\placeholdernc{advanceable}@;
+ requires @\placeholder{advanceable}@