N4829 Editors' Report -- Programming Languages -- C++

Richard Smith (editor) (Google Inc)
Thomas Köppe (co-editor) (Google DeepMind)
Jens Maurer (co-editor)
Dawn Perchik (co-editor) (Bright Side Computing, LLC)


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

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)

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)

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:

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

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:

Feature test macros

Attention should be drawn to the fact that multiple papers updated feature test macros to the same version:

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

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

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

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

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

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

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

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

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

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

     * 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

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

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.