N4297 Editor's Report -- Working Draft, Standard for Programming Language C++

Richard Smith
Google Inc


Special thanks to Dawn Perchik for performing the bulk of the edits required for core and library issues.

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

New Papers

Notable Changes to Issues and Papers as Moved

CWG motion 1

CWG1875, which was in 'ready' status in N4192, was neither listed as an issue to be applied nor as an issue to be skipped. Its resolution has not been applied here, and it will once again be in 'ready' status for the next meeting.

CWG1651 and CWG1893, which were listed as being applied by this motion, are not applied, because their wording is in CWG1299 which is not being applied. Those issues will be in 'drafting' status along with CWG1299 at the next meeting.

CWG1777 has no effect, because its changes are entirely superseded by CWG motion 12.

CWG motion 5

Update example in [except.throw]p7 to use std::uncaught_exceptions rather than the now-deprecated std::uncaught_exception.

CWG motion 12

This change conflicts with several other changes moved at Urbana. These conflicts are resolved as follows:

The change from "exception-specification" to "exception specification" in [dcl.fct.def.default]p3 has not been applied, because this wording clearly intends to refer to the grammar element.

CWG motion 13

Fix left-fold/right-fold mixup in example in [temp.variadic] to match the normative wording.

LWG motion 10

LWG2408: Add a wording change from N3843's "Common wording" that was not included in the library issue applying N3843 to the standard. This change has no normative effect but removes the appearance of inconsistency. Also reword this change and some of the other wording changes in this issue for clarity.

LWG motion 11

LWG2361, LWG2387: Format qualified-id as a grammar term.

LWG motion 12

Update Annex C's existing mentions of unary_function and binary_function to clarify that they no longer exist.

LWG motion 14

Changes to [unique.ptr.runtime.modifiers] removed text that was not present; in the first paragraph, the only applied change was the insertion of a default argument. This makes the standard match the described "after" state.

LWG motion 16

[unord.set.overview], [unord.multiset.overview]: Replace meaningless "Container_move_assign" with the intended "Pred".

Other Notable Editorial Changes:

Added new subclause [diff.cpp14] (C.4) for compatibility differences between the working draft and ISO C++14.

Minor Editorial Fixes

A log of all editorial fixes made since N4140 is below:

commit 274362c055983716b5f08f21bc393417fa0aae3f
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Nov 11 23:44:09 2014 +0000

    Fix collation order

commit 4e3ff5ecd1a02937be72dc0bc1df7b5a5db5eab2
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Nov 11 21:55:44 2014 +0000

    Fix more bad spacing

commit 1b00493b35fa7cec8178c34dfe573404d391b8ef
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Nov 11 21:41:42 2014 +0000

    [declarators] Fix bad spacing in 'new-expressions'

commit 05fff17e3c999655743c156a4b88aa3732938ad2
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Nov 11 21:31:08 2014 +0000

    Introduce definition 'placement new-expression' and apply consistently

commit 68ae5d450d583fb4616021d2c5ad10466d704332
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Nov 10 17:35:40 2014 -0800

    [associative.reqmts] Italicise grammar term 'qualified-id'.

commit 9d8b739814baff6af5c5b43c65cf49e2f36f89f7
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Nov 10 16:03:56 2014 -0800

    [basic.types] Replace "array of unknown size" with proper phrase "array
    of unknown bound".

commit efa66469b3e098c2fc2d10fb6a9fa6fb13edae0e
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Mon Nov 10 14:06:19 2014 +0000

    [insert.iterators], [stream.iterators] Use injected class names.

commit a0ace5b890c05a5735fa673293203e64e85b385c
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Nov 9 12:37:44 2014 -0800

    [diff] Add subclause for incompatibilities with C++2014.

commit ffb98e176512ae6b428c35cdef4f2dd80a7752dd
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sat Nov 8 16:03:28 2014 +0000

    [vector.bool] Use code font for allocator_traits

commit c9c5f1279fac53d884ceefaee9cefc2579c3fe78
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sat Nov 8 03:55:54 2014 +0000

    [bad.exception] Fix indentation of itemdecl contents.

commit 7b9fbb49b8489505ddf5b7fcbe3f0b6289f52f7d
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Nov 7 13:25:27 2014 -0800

    [cpp.predefined] Stop trying to reuse a footnote for two different bullets;
    that breaks hyperlinking.

commit e6b6462ec0d0284d59cd6efe5b67ad4a86b11b50
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Nov 7 09:59:42 2014 -0800

    CWG1998 Additional sources of xvalue expressions

    Fixed editorially per discussion with CWG; the original wording and
    revised wording are normatively equivalent.

commit 9b83e84a72f5914421cb91c8cfcc02f79261a7f4
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Nov 6 10:32:10 2014 -0600

    Fix formatting of INVOKE

commit a2c1d2e53fc3084521bfb7495b9081d3f5e5b9ca
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Nov 5 13:53:42 2014 -0800

    [temp.deduct.call] Give a name to the function parameter in an example.

commit 5942beb59ab6ad6462cee008053c0dd974ee26b1
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Nov 5 13:52:48 2014 -0800

    [temp.arg.template] Remove some "call it"s.

commit 89508dda123affaa165075f43741d82ade3c4830
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Nov 3 14:30:48 2014 -0800

    [dcl.fct] Add paragraph breaks into overlong paragraph that covers several
    independent topics.

commit a52a7aa1b80d7723f504cdc5981ddb0a65b476d7
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Oct 9 17:46:40 2014 +0100

    Replace 'prototype' with 'declaration'