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

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


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 N4762.

Minor editorial fixes

A log of editorial fixes made to the working draft since N4762 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 51df4bef36abd6a559279634b357e606af5dd9d4
Author: Casey Carter <Casey@Carter.net>
Date:   Mon Jul 16 15:20:16 2018 -0700

    [library.general] Fix up the library categories table (#2262)

    by ordering [localization] correctly, and adding a row for [time]

commit 6cee2110159f4a8abfa5254de044154633a9acdb
Author: Casey Carter <Casey@Carter.net>
Date:   Tue Jul 17 06:52:36 2018 -0700

    [iterators.general] Fix up Iterators library summary table (#2263)

    by correcting the title for [predef.iterators] to "Iterator adaptors", and adding rows for [iterator.range] and [iterator.container].

commit a47d6ac11530630d0d1f78f3727e118e5f19070d
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Jul 19 23:04:51 2018 +0200

    [string.view] Move complexity requirement into [string.view.template]. (#2261)

commit 15715f3347aaba6b2cc03c477a17e1f6462a8074
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Jul 19 23:05:53 2018 +0200

    [span.overview] Move requirements on types to after the synposis. (#2260)

    As described in [structure.specifications]

commit 437add693809d43ea30ada757987240d3581f929
Author: Jonathan Wakely <github@kayari.org>
Date:   Mon Jul 23 22:05:47 2018 +0100

    [mem.res.class] Add default constructor (#2268)

    The addition of a copy constructor by P0619R4 caused the default
    constructor to be suppressed, which was not intended.

commit ed0e9c0bc6b54dfe14193345cb85a389b6dd2e5b
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Jul 23 23:06:38 2018 +0200

    [std] Fix cross-references that should point to [class.prop] (#2253)

commit a07890ba525e87955ac147bfe5b8e7b2ec7ae584
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Jul 23 23:05:36 2018 +0200

    [dcl.dcl] Remove incorrect footnote about the implicit int rule.

commit 1091b51ff14a1af1cb3c7524eab261574ec9c732
Author: Marshall Clow <marshall@idio.com>
Date:   Wed Jul 25 21:30:14 2018 -0700

    Fix spelling error "Tueday" --> "Tuesday" (4x)

commit b21456eca47a5fcdf3cf6dc647943b45b7bde663
Author: Marshall Clow <marshall@idio.com>
Date:   Wed Sep 12 06:07:37 2018 -0700

    [map] Use `mapped_type` rather than `T` for indexing operations (#2330)

    The specification of `unordered_map` already uses `mapped_type`. I'm going to change `flat_map` to do so, too.  We use `mapped_type` in other places. The description (line 6311) even says "a reference to the `mapped_type`".

commit c39932f1fb2a511358040100e8a5ef759a5b0453
Author: Kazutoshi SATODA <k_satoda@f2.dion.ne.jp>
Date:   Wed Sep 12 22:08:28 2018 +0900

    [temp.constr.order] Fix typo: conjuctive -> conjunctive (#2322)

commit 5ee42bdd4a7a391865ab2988c806ac908e81a5c2
Author: Koichi Murase <myoga.murase@gmail.com>
Date:   Wed Sep 12 22:09:17 2018 +0900

    [expr.prim.id] Fix typo "the the" (#2314)

commit c1007bd673169cfafb43b216476335d20e62411d
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date:   Wed Sep 12 09:41:19 2018 -0700

    [basic.types] Replace redundant "cv-unqualified scalar types" with just "scalar types"

    The redundant phrasing "cv-unqualified scalar types [...] and cv-qualified versions of these types" is cruft that was accidentally left over from the dueling resolutions of CWG 1746 (which added "cv-unqualified") and CWG 2094 (which added "and cv-qualified versions of these types").

commit 414c2706f75f4bb76ecc444e98ac2e2dcc3c6b00
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Wed Sep 19 09:15:36 2018 +0200

    [dcl.init.aggr] initializer-list (grammar) is never empty

commit e160ea1300e21eb412feaa7733f1e7cd0e1875d8
Author: Olivier <okannen@gmail.com>
Date:   Sat Sep 22 01:45:19 2018 +0200

    [temp.param] Remove vestigial restriction on non-type template parameters of class type.

    P0732R2 intended to remove this restriction, but missed one of the places where we repeated the rule.

commit 61e5815fd137e3e0ecd03823f507d175be897fb8
Author: Alisdair Meredith <public@alisdairm.net>
Date:   Thu Oct 4 07:17:54 2018 -0700

    [class.copy.ctor] Add missing cross-references to Annex D (#2344)

    Add the missing cross-references to corresponding Annex D entry for the deprecated implicit declaration of copy constructor and copy assignment operator when either the destructor or other
    copy operation is user-declared.

commit 3f0a2f353aa348e23a334110ae32764588fa6b8a
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Jul 8 21:45:34 2018 +0200

    [expr.pre] Add note on operator regrouping here,

    moved from [intro.abstract].

commit 5af570b491d11bbd423494c61f2829667c3c74bd
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Tue Oct 9 02:15:04 2018 +0200

    [copy.ctor] Rearrange constructor subclauses (#2270)

    * [class.default.ctor] Create new subclause under [class.copy],
    move [class.copy.ctor] there, and rearrange the general
    descriptions in [class.copy]. Move a statement that applies
    during construction to [class.cdtor].

    * Fix cross-references for 'default constructor'

commit 6997ed2799111ddf57dfa49418be581adfd7c03b
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Jul 20 20:18:01 2018 +0200

    [stmt.switch] Clarify comparison for case labels

commit 214782433d53a93ada321cb19665e1b7719427ba
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Sun Jul 22 13:46:03 2018 +0200

    [class.dtor] Clean up awkward '.. is the type of the class' phrasing.

commit 408141121e70bebc943af3fb03ef957ee0f51e43
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Tue Jul 24 21:49:01 2018 +0200

    [containers,utilities] Mark exposition-only names

    with italics teletype and use hyphens, not underscores,
    to highlight that these are not standard-prescribed names.

commit 16f23d1c59787a6cfbe747c0ec66b1102db26223
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Oct 8 17:43:19 2018 -0700

    [container.node.overview] Remove suggestion that an implementation could
    define a class named 'node-handle'.

commit e0613813ad63aaaea9883a1067c5a3c04d88328f
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Jul 27 00:01:46 2018 +0200

    [expr.new] Use 'object', not 'entity', for new-expression.

    The term 'entity' is too generic here.
    Also move the specification of the non-array return
    value just before the array case, after the description
    of the parsing disambiguation.

commit 340573ca6936c39eaec1949e824609d0f9ac51b1
Author: timsong-cpp <rs2740@gmail.com>
Date:   Mon Oct 8 20:45:59 2018 -0400

    [temp.param] fix spaceship example (#2291)

    A two parameter spaceship can't be a member, and the parameter types for a defaulted operator can only be const C& ([class.compare.default]p1).

commit e3e8ce46c3d4ff58601e104b6d4c4ba1e789b7b2
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Aug 12 00:10:30 2018 +0200

    [std] Replace use of 'structure' by 'class'

commit a5c05c2a07d22cfbbfc32e657017a6e2ce837618
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Tue Oct 9 02:52:47 2018 +0200

    [class.virtual] Define 'virtual function' (#2297)

commit 28bd28f7db5b4d463d1f5fd8b252b45ad3b35528
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Tue Oct 9 08:59:19 2018 +0800

    [dcl.init] Rephrase "user-defined conversion sequence" (#2298)

    1. The conversion sequence is governed by the rules defined here. Saying "conversion sequence" here will cause circular definition.
    2. Overload resolution selects a function, not a conversion sequence.

commit c85202d90102b8ed9c7e0d9532fdc2ef3b43e7c8
Author: languagelawyer <38548419+languagelawyer@users.noreply.github.com>
Date:   Tue Oct 9 04:00:53 2018 +0300

    [basic.life] Change "class or aggregate type" to "class or array type" (#2309)

commit 4c431f712a35199f3b9b064a0b6580ec2b224386
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Sep 2 23:38:53 2018 +0200

    [expr.add] Clarify if/otherwise ladder

commit ad121b96df829872565285cca7f00f6bd22cb428
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Sun Sep 2 23:59:14 2018 +0200

    [basic.lval] Clarify result object for prvalues as operands

commit 27675c7bbe749aaaa19c1072a68cedc10114e9bd
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Sep 3 00:05:58 2018 +0200

    [class.member.lookup] 'unqualified-id' is the correct complement for 'qualified-id'

commit 897e3dd719499017e9866a21f7eb88433264c67d
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Sep 3 00:20:48 2018 +0200

    [class.this] A pointer represents more than an address

commit 32ac0796318a35104f541f33c0ddec6c8c7f8081
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Sep 3 00:33:05 2018 +0200

    [class.temporary] prvalues are not materialized,

    temporary objects are.

commit 846998e6eaf76fb5a0a6bbbe00c5ed0ba8b7523d
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Sep 6 22:36:45 2018 +0200

    [basic.def.odr] Replace undefined term 'non-trivial function'

commit a297a3d2b5d98b3ae224223466f8ccddd00fd14e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Sep 6 22:46:44 2018 +0200

    [basic.def.odr] Clarify antecedent for declarative region

commit 781374ba343aafb23772b6326abce1cccade2030
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Sep 6 23:15:13 2018 +0200

    [unique.ptr.single.ctor] Simplify description of unique_ptr constructors

commit cb3d918b38dc439da28e688365c0877685130c85
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Fri Sep 14 22:37:27 2018 +0200

    [class.union] use 'class', not (undefined) 'struct'

commit 9a9a49077702815c49cdb0bd78fe58ca477b16ae
Author: Louis Dionne <ldionne@apple.com>
Date:   Sun Sep 23 11:29:35 2018 -0700

    [editorial] Use struct instead of class to make example valid

    P0732R2 [1] was merged in Rapperswil, but one example is invalid because
    the constructor for A is private, so it can't be constructed from the
    string literal.

    [1]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0732r2.pdf

commit 6df3eb6de13fd1d98cb2a2988361811556927882
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Mon Sep 24 22:37:52 2018 +0200

    [dcl.attr.contract.check] Violation handlers are not 'user-provided'

commit 82cfc5b67b33ca076a80184b508ed2172af9d3aa
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date:   Thu Sep 27 10:22:44 2018 +0200

    [temp] Add 'static' to examples for static data member template

    A non-static data member cannot be a template.

commit f23f1d0613099496e74cabf0c87cceccb94fb919
Author: JF Bastien <github@jfbastien.com>
Date:   Mon Oct 8 18:29:41 2018 -0700

    Move "plain ints" statement to a note (#2346)

commit ad6b6f27e803671f0d0280d05990950d16909afa
Author: Alberto Barbati <2210776+iaanus@users.noreply.github.com>
Date:   Tue Oct 9 03:38:23 2018 +0200

    [fs.filesystem.syn] Remove vestige of removed trivial-clock type

    The removed paragraph refers to trivial-clock that has now been replaced by chrono::file_clock.