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

2019-01-21
Richard Smith (editor) (Google Inc)
Dawn Perchik (co-editor) (Bright Side Computing, LLC)
Jens Maurer (co-editor)
Thomas Köppe (co-editor) (Google DeepMind)
<cxxeditor@gmail.com>

Acknowledgements

Thanks to all those who have submitted editorial issues and to those who have provided pull requests with fixes.

New papers

Motions incorporated into working draft

This revision contains only editorial changes relative to N4791.

Notable editorial changes

DECAY_COPY

DECAY_COPY has been renamed to decay-copy for consistency with other exposition-only entities, and moved from [thread.decaycopy] to [expos.only.func].

Other changes to section labels

[iterator.container] has been merged into [iterator.range], and [range.prim] has been merged into [range.access].

The parts of [range.adaptors] that create new ranges rather than adapting existing ranges have been split into a separate [range.factories].

The parts of [dcl.init] relating to indeterminate values have been moved to a new [basic.indet].

Minor editorial fixes

A log of editorial fixes made to the working draft since N4791 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 2831ba3b8e1862a8a0e52d540b61062e72e89d6d
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Mon Jan 14 11:15:11 2019 -0500

    [depr.strstreambuf.virtuals] Hyphenate "implementation-defined"

commit d333390f0dd56dc9143731c1be00f66bc3752479
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Dec 29 12:54:56 2018 +0100

    [range.prim] merge into [range.access]

commit dc3be11dd06a5edfa81061dce4b79fec2a8024df
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Dec 29 12:54:26 2018 +0100

    [iterator.container] merge into [iterator.range]

commit 75dde78fd9ac709ff4843d1d5572d5cbfe4ac6d2
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Mon Jan 21 23:24:52 2019 +0800

    [meta.const.eval] Fix typo in function name (#2650)

commit 55577a76181134d1dd442af3f4eb36c4d861c7c9
Author: kiroma <krzysio.kurek@wp.pl>
Date:   Tue Jan 15 00:56:07 2019 +0100

    [thread.condition] Improve description of efficiency of condition_variable.

commit 281a8bd29f97b5249eae68fe0280e2dfda5ac714
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Mon Jan 7 18:37:20 2019 -0500

    [ranges.syn] Fix a typo: "fowarding"

commit 099022dbf1642541ab0d1c380ed26e8fb1244d86
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Jan 2 22:29:51 2019 +0100

    [unreachable.sentinel] 'open interval' -> 'unbounded interval'

commit a9fdd8589a51617d5d60bf59263d1567076718ba
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Tue Jan 1 21:40:09 2019 -0500

    Fix some `operator<=>` declarations with the wrong number of parameters.

    Also one `operator<` that should at least have been a const member function.

commit d42648926f4131586943b7dccb7df41bfbd8df5b
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Tue Jan 1 14:56:43 2019 +0100

    [expr.prim.id.dtor] Fix comment in example.

    In translation phase 3, the "0.T" in the line of code is parsed as a (single) preprocessing-token.

    In phase 7, this preprocessing token is converted into a user-defined-floating-literal whose ud-suffix component is "T".

    At no point is the "0." partial token a floating-point literal. At most, it is the fractional-constant component in a bigger user-defined-floating-literal token.

    Fixes #2630.

commit bac5e8438a9238730ae76e7ecf0899a52ef20fe0
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Dec 31 09:19:20 2018 +0100

    [range.cmp] Deconfuse subclause heading.

commit ede68b76f56ebb5bdf0692ab0ac2e5bcb68de96a
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Dec 30 10:45:33 2018 +0100

    [description] Drop 'informative' from the heading.

    This subclause contains many normative definitions
    (e.g. [operators]); marking it as 'informative' is
    misleading.

commit 5884d91293055be8b1ab494ef2ee5e675caad00c
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Dec 30 10:41:21 2018 +0100

    [expos.only.types] Exposition-only types apply more generally,

    not just to capture language linkage.  For example,
    'node-handle' is an entire exposition-only class.

commit ce10ce47647e61ef8a308ad0aefcb2ff1094017a
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Dec 30 10:28:16 2018 +0100

    [expos.only.func] New home for global exposition-only functions.

    Also introduce the descriptive mechanism of an
    exposition-only function.
    Remove [thread.decaycopy] by moving its contents here.
    Use the spelling 'decay-copy' (italics code font) instead of
    introducing an intermediate meta-macro DECAY_COPY.

commit 6833990f6e090644df012c11ebc55b26c7580565
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Dec 29 21:33:54 2018 +0100

    [range.refinements] Rephrase heading to not use 'common range'

    'Common range' means iterator and end marker have the same type;
    see [range.req.general].  This is not what this subclause is about.

commit 5874ecd6f82612873d4a40e14a3e93947b2ebab6
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Dec 29 13:27:54 2018 +0100

    [special.mem.concepts] Use 'models ... only if' phrasing for semantic constraints.

commit 1c3b991fac1b6668f42bde6824435f8ece037a10
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sat Dec 29 12:43:27 2018 +0100

    [range.factories] New subclause, split off from [range.adaptors]

    Range adaptors take a range and produce a new range;
    range factories take something else (or nothing) and produce a range.

commit 3afb777a04ddb2e31292c4cf011475db5b65a9fc
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Dec 28 00:25:45 2018 +0100

    [dcl.typedef] Use 'redeclare', not 'redefine'

commit e88e605f3561546ab47d327d1865a576c415bc7b
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Dec 28 00:12:18 2018 +0100

    [basic.life] Adjust subclause heading

    and clarify that references are treated as-if requiring storage.

commit 5d35f0c24e0724aee7993cef6085108fdfcd4590
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Dec 21 20:44:23 2018 +0100

    [iterators] Qualify declarator-id with sub-namespace.

commit 4beab059b54b2fb859cc404b79682cbb71d76364
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Dec 21 00:42:42 2018 +0100

    [expr.new] A new-expression might not invoke a constructor

commit 90467df5ce5b0dd92058dd13b082f6ed3bc16efc
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Dec 21 00:37:06 2018 +0100

    [over.ics.user,over.ics.rank] Reference binding is part of the second SCS

commit 8909a8f20249435788fa4f43e5199f2595a1e623
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Mon Dec 17 18:54:04 2018 +0100

    [diff.dcl] Capitalize sentence.

commit 64f01ee78bfac1450c6ffefbfe345a65ce951da1
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sun Dec 9 18:59:21 2018 -0400

    [counted.iter.cmp] Add missing colon to specification element

commit 3ff583af0448540f40e9db7cd07c30489696ecd7
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Mon Dec 10 15:14:50 2018 -0400

    [istreambuf.iterator] Remove duplicated declarations

commit 64d61459522873003f4af52d4abab65cac2f48c5
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Mon Dec 10 15:13:34 2018 -0400

    [istream.iterator] Remove duplicated declarations

commit 48acf476dedcb443407cadc189a79eb89f623097
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 8 15:26:39 2018 -0400

    [insert.iterators] Remove duplicated declarations

commit 45f889a3fe071cadc80f97d58e1f905e8213455b
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 8 14:14:55 2018 -0400

    [iterator.synopsis] Drive-by add semantic breaks

commit b72a3447c2a602aa6362fd0073c6683cedee2098
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 8 14:13:36 2018 -0400

    [move.iterator] Remove duplicated declarations

commit 0fd872506cf6d30101eacd654b2133a5e090b654
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 8 14:09:08 2018 -0400

    [reverse.iterator] Remove duplicated declarations

commit a1c3e9c0319f96e549fae711e616e41ff571cb6d
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 8 14:08:20 2018 -0400

    [iterators] Move specialization to synopsis

commit eb1067835df26c6eef46d006420be2129758d7d0
Author: Nicolas Lesser <blitzrakete@gmail.com>
Date:   Sat Dec 8 19:32:21 2018 +0100

    [expr.and,expr.or,expr.xor] Add grouping sentence to the binary and/or/xor operators.

commit 27d19661fbb0a5424f72330724d9809618efbb8b
Author: Géry Ogam <gery.ogam@gmail.com>
Date:   Sat Jan 19 00:59:08 2019 +0100

    [basic.lval] clarify the contexts where void expressions can appear and their value category

commit 9c3b921635b041895d44f378ea3f534145e05006
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Oct 25 19:16:06 2018 +0200

    [basic.lookup,over.call.func] Clarify lookup rules for function calls.

    Also add cross-references to [class.member.lookup] when
    talking about 'looked up in the class of the object expression'
    in [basic.lookup.classref].

commit 0cd2126ddab16740d38a302f0da7fee5658f5fbb
Author: Jonathan Caves <joncaves@microsoft.com>
Date:   Mon Dec 17 14:16:45 2018 -0800

    [expr.prim.lambda.capture] Add missing semicolons after statements ending in lambda expressions

commit 1111bf9d422ebd3765730d95155860aeda07234a
Author: Casey Carter <Casey@Carter.net>
Date:   Sun Jan 6 04:16:39 2019 -0800

    [allocator.requirements] relocate example to end of subclause

    and add paragraph number.

    Fixes #2639.

commit b4f5a7e426c8b55c08e414aee434fe85c41e2a48
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 29 21:01:42 2018 -0400

    [ostreambuf.iterator] Remove tutorial-like sentence

commit d902c5bfe137dc303fb5c7c54b6409cddac61cdc
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sun Dec 9 23:13:07 2018 -0400

    [ostreambuf.iterator] Move description before the synopsis

commit 486e7a2f8308a5f4d8aca20a74dd7a1ed2974a84
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 29 20:59:51 2018 -0400

    [istreambuf.iterator.proxy] Move description before class synopsis

commit ca07d4deb68ffb9630d3f73a33f552d5040bab17
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sun Dec 9 21:54:51 2018 -0400

    [istreambuf.iterator] Use nullptr instead of 0

commit f9995862feaf47b85aabf7ec63ead2d5b00d5573
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sun Dec 9 21:49:56 2018 -0400

    [ostream.iterator.ops] Check for non nullptr value implicitly

commit b2cfef81694aa61a7c197ad58c96ee44f20f18ca
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sun Dec 9 21:28:50 2018 -0400

    [ostream.iterator.cons.des] Use nullptr instead of null

commit a97f9c18edcbcfb3cf10149116f4126a422ce1fe
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 29 20:11:38 2018 -0400

    [ostream.iterator] Remove redundant paragraph

commit 8098533eabd9361b7798de7a44dea0277fc767e3
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 29 20:11:03 2018 -0400

    [ostream.iterator] Remove tutorial-like description

commit c3a5aa19594a534f8bb9adc9b83f0eb703870699
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sun Dec 9 20:31:29 2018 -0400

    [istream.iterator.ops] Unparenthesize return object name

commit c84872ba9679e322ee2cded0b1a129d7b8faf2d0
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sun Dec 9 19:43:59 2018 -0400

    [istream.iterator] Use nullptr instead of 0

commit 169f0c41b51ba081e2c3e662276e9a4061567eaa
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Dec 19 22:01:18 2018 +0100

    [iterator.primitives] Rescue introductory sentence.

commit 98f1e9f668cbe109511fd8cee1afc03c4bb9f007
Author: JF Bastien <github@jfbastien.com>
Date:   Thu Dec 20 11:27:51 2018 -0800

    [optional.assign] use injected class name consistently

commit 597b6900151f810acd776e452f08c1e2941857b9
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Dec 19 21:41:46 2018 +0100

    [reverse.iterators] Use the public accessor function,

    not the exposition-only member 'current', from non-member functions.

commit 3d9f80e990daf459a85cff539bd2ce64c0986886
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Tue Dec 11 15:50:03 2018 -0400

    [ranges.syn] Complete requires clause of view_interface

commit a61eb25d048b96fd23b7544d12f43299ccf51026
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Tue Dec 11 20:23:37 2018 -0400

    [ranges.syn] Complete requires clause of filter_view

commit 687b718c431c67a80888552c5055b0903fb197ba
Author: Casey Carter <Casey@Carter.net>
Date:   Wed Dec 19 13:39:05 2018 -0800

    [alg.min.max] Fix typo in returns element of ranges::minmax (#2600)

    Also add linebreaks as appropriate after template-heads in declarations of `min`, `max`, and `minmax`.

commit e7c5655a9a4746b895937aee4fdadfad30f02cfa
Author: Alberto Barbati <2210776+iaanus@users.noreply.github.com>
Date:   Tue Dec 18 16:02:35 2018 +0100

    [dcl.constexpr] Add "consteval" to subclause heading (#2597)

commit a88d02d8d77e730bbf2730b6988a8b63319496c3
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Wed Dec 12 16:43:21 2018 +0100

    [temp.mem.func] Remove inappropriate parentheses in 'Array<T>::operator[]()'.

commit 4d9447fb590bf7fdc302706eb1560e6a402eca95
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Sat Dec 8 10:09:29 2018 -0400

    [reverse.iterator] Remove stray backslashes

commit 54ddae362645af5028e622f92b795cd6d198c8a0
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Fri Dec 7 21:09:52 2018 -0400

    [indirectcallable.general] Fix reference

    Just 6 lines below, it is correct.

commit 5aaec13ef8f29527e762f8e4bf8e2362c8b1419c
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Dec 7 23:03:51 2018 +0100

    [basic.indet] Indeterminate values

    Create a new section, moved from parts of [dcl.init].

commit 9cf2dd2247af79721f4961c96dd9c57003556c94
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Dec 7 16:06:05 2018 -0800

    [lex.key] Fix relative order of 'do' and 'double' in keywords table.

commit 607ec0d6d6ce7c6e72c1cae63d22bbdf40eebd2c
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date:   Fri Dec 7 19:28:30 2018 -0400

    [iterator.concept.bidir] Add comma for clarity