N4603 Editor's Report -- Committee Draft, Standard for Programming Language C++

2016-07-12
Richard Smith
Google Inc
<cxxeditor@gmail.com>

Acknowledgements

Thanks to Dawn Perchik, Jonathan Wakely, Thomas Köppe, and Alisdair Meredith for performing the edits for many of the motions applied to this draft, and to Kevin Godby and Thomas Köppe for modernizing and improving various parts of the standard draft build process.

Thanks to the editing committee for reviewing the C++17 Committee Draft. The editing committee for the C++17 CD comprises: Marshall Clow, Alisdair Meredith, Mike Miller, and Jeffrey Yasskin.

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

New papers

Other than their cover sheets, the content of N4604 and N4606 are identical. Both N4604 and N4606 contain the changes listed below.

Motions incorporated into committee draft

Core working group motions

CWG motion 1: Core issue resolutions for 7 issues applied:

CWG motion 2 applies to the Concepts TS

CWG motion 3: P0028R4 "Using attribute namespaces without repetition"

CWG motion 4: P0035R4 "Dynamic memory allocation for over-aligned data"

CWG motion 5: P0091R3 "Template argument deduction for class templates" (clause labels renamed from those in paper)

CWG motion 6: P0127R2 "Declaring non-type template parameters with auto" (clause labels renamed from those in paper)

CWG motion 7: P0135R1 "Guaranteed copy elision through simplified value categories"

CWG motion 8: P0137R1 "Replacement of class objects containing reference members"

CWG motion 9: P0145R3 "Refining expression evaluation order" and P0400R0 "Order of evaluation of function arguments"

CWG motion 10 was not approved.

CWG motion 11: P0283R2 "Standard and non-standard attributes"

CWG motion 12: P0292R2 "constexpr if"

CWG motion 13: P0296R2 "Forward progress guarantees: base definitions"

CWG motion 14: P0299R1 "Forward progress guarantees for the Parallelism TS features"

CWG motion 15: P0386R2 "inline variables" (see below)

CWG motion 16: P0391R0 "Introducing the term 'templated entity'"

CWG motion 17: P0217R3 "Structured bindings"

CWG motion 18: P0305R1 "Selection statements with initializer"

CWG motion 19: Core issue resolution from one issue applied:

Core motions added a total of 10 pages to Clause 1-16.

Library working group motions

LWG motion 1: Library issue resolutions for 16 issues in "Ready" status applied:

LWG motion 2: Library issue resolutions for 11 issues in "Tentatively Ready" status applied:

LWG motion 3 applies to the Library Fundamentals (v2) TS

LWG motion 4 applies to the Library Fundamentals (v2) TS

LWG motion 5: Library issue resolutions for 4 issues in "Immediate" status applied:

LWG motion 6: Library issue resolutions for 13 issues in "Immediate" status applied:

LWG motion 7: P0063R3 "C++17 should refer to C11 instead of C99" (see below)

LWG motion 8: P0175R1 "Synopses for the C library" (see below)

LWG motion 9: P0088R3 "variant, a type-safe union for C++17"

LWG motion 10: P0307R2 "Making optional greater equal again"

LWG motion 11: P0393R3 "Making variant greater equal"

LWG motion 12: P0032R3 "Homogeneous interface for variant, any, and optional" (with normative changes, see below)

LWG motion 13: P0067R3 "Elementary string conversions" not applied, see below

LWG motion 14: P0254R2 "Integrating string_view and string"

LWG motion 15 was not approved.

LWG motion 16: P0258R2 "has_unique_object_representations"

LWG motion 17: P0040R3 "Extending memory management tools"

LWG motion 18: P0084R2 "emplace return type"

LWG motion 19: P0302R1 "Removing allocator support in std::function"

LWG motion 20: P0083R3 "Splicing sets and maps"

LWG motion 21: P0181R1 "Ordered by default" (with normative changes, see below)

LWG motion 22: P0163R0 "shared_ptr::weak_type"

LWG motion 23: P0209R2 "make_from_tuple: apply for construction"

LWG motion 24: P0295R0 "Adopt selected Library Fundamentals v2 components"

LWG motion 25: P0174R2 "Deprecating vestigial library parts"

LWG motion 26: P0337R0 "Delete operator= for polymorphic_allocator"

LWG motion 27: P0358R1 "Fixes for not_fn"

LWG motion 28: P0219R1 "Relative paths for filesystem"

LWG motion 29: P0392R0 "Adapting string_view by filesystem paths"

LWG motion 30: P0394R4 "terminate() for parallel algorithms exception handling"

LWG motion 31: P0336R1 "Better names for parallel execution policies"

LWG motion 32: P0371R1 "Temporarily discourage memory_order_consume"

LWG motion 33: P0346R1 "A <random> nomenclature tweak"

LWG motion 34: P0180R2 "Reserve a new library namespace for future standardization"

Library motions added a total of 42 pages to Clause 17-30.

Notable changes to papers as moved

CWG motion 4

Wording and paragraph ordering within [new.delete] was modified to be consistent across all of the largely-duplicated subsections.

CWG motions 5 and 6

Some clause labels were renamed from those proposed by these papers, for consistency with the rest of the standard, as follows:

CWG motion 15

Added missing edit to clause 12 to avoid conflict with wording added to clause 3, which makes a static inline data member declaration a definition. The clause 12 wording had text left over from constexpr rules that required an initializer to be provided.

LWG motion 2, issue 2683

Proposed wording did not fit surrounding text and has been reworded.

LWG motion 7

This paper did not update the definition of "C standard" in [intro.scope]/2 from C99 to C11. This change has also not been made editorially, as it is unclear whether this omission is intentional or an oversight. The paper has been applied as written, but this issue warrants further investigation.

LWG motion 8

The purpose of this paper was to request editorial freedom to restructure the description of the parts of the C++ standard library that were inherited from C. To this end, the edits applied are based on those in P0175R1, but in addition, the descriptions of many C library functions have been moved, reordered, and reformatted into the standard format used for C++ library description.

See the list of editorial fixes below for the full details.

LWG motion 12

Added missing updates to definition of class template optional to match changes in detailed description.

Removed detailed description of variant's in_place_type and in_place_index to match changes to synopsis.

The template parameters to in_place_index_t and the corresponding form of in_place were specified as template<int> and template<size> respectively in the wording paper, and have been editorially corrected to the intended template<size_t>.

LWG motion 13

Proposed wording has different signatures for from_chars in the synopsis and in the detailed wording. The paper was returned to LWG for redrafting, and a revised wording paper has been provided by the paper author as P0067R4.

LWG motion 21

No explicit editing instructions were provided to merge this motion with the introduction of std::pmr from 2016-02 LWG Motion 6, which the base document for this motion predates. At the request of the paper author, and based on the clear intent of both motions, the change was also applied to the containers in namespace std::pmr.

Notable editorial changes since N4594

Minor editorial fixes

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

commit 0f682fdcccd2c3a64d478e1e3cdcf3d8f6928bd1
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Jul 11 18:11:57 2016 -0700

    Fix review comments from Jeffrey.

    [any.modifiers] The Requires: clause here was redundant, since the
    Remarks: clause gives the same condition as a SFINAE condition.

    [path.itr] Align the phrasing of the way in which path::iterator is not
    a bidirectional iterator with the corresponding phrasing in the
    description of the bidirectional iterator requirements.

commit 8f0c572eae9b8306e5d78a86dbdebf5c353f5895
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Jul 11 14:38:33 2016 -0700

    [meta.type.synop] Italicize placeholder text "default-alignment" to
    match formatting in detailed description.

commit bd00cfb2b9f505220b6fc92f0310e56e11209e67
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Mon Jul 11 20:36:22 2016 +0100

    [regex] Remove bogus indexlibrary entry

commit d17944301f1cf53e0b5af2dcda25039bc36c3556
Author: burblebee <dawn+github@burble.org>
Date:   Mon Jul 11 12:35:21 2016 -0700

    Make universal-character-name \grammarterm'd (#807)

    Fixes #296

commit 6098c7fa264ac862711616ca933611220e6cc208
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jul 10 23:55:31 2016 -0700

    [c.math] Change title of this subclause from "C library" to
    "Mathematical functions for floating point types" to match its contents;
    the special math functions in <cmath> are not part of the C library.

commit b882709b88e8d8f88b47036f75d99e6949e470fd
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jul 10 17:46:47 2016 -0700

    [objects.within.classes] Clarify what "exposition only" means for
    private members that are not data members. This applies the first
    portion of LWG2516 (voted into Lib Fundamentals) to the working paper.

commit 9c4447539b309db428186ecdfc47809d3ace96fc
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jul 10 17:15:49 2016 -0700

    Rename [util.smartptr.weakptr] to [util.smartptr.weak.bad]. This section
    describes the bad_weak_ptr exception class, so the previous name was
    completely inappropriate.

    Fixes #801.

commit 5f9e2c145d98a7cc605993359d2e2a5437d083a5
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jul 10 17:03:29 2016 -0700

    [fs.op.relative] Replace "Returns A except B if an error is produced"
    with "Returns A, or B if an error is produced" to match similar wording
    elsewhere.

commit 73b8f1ab222076c4b02be47c1b7e1386247695a9
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jul 10 16:59:29 2016 -0700

    [any] Fix template parameter list of make_any to list the
    parameter that is intended to be explicitly specified first. The
    wording paper had inconsistent parameter orders between the synopsis and
    the detailed wording, and this is the obvious intent.

    Fixes #813.

commit 186885a158863e204b45251ecced3c6938dd3c6d
Author: timsong-cpp <rs2740@gmail.com>
Date:   Sun Jul 10 14:42:39 2016 -0400

    [func.default.traits] Remove inappropriate reference to [unord] (#819)

    The *unordered* associative containers do not use default_*order*.

commit aee45702ed8527b9dc74552a39c32fb6111a01c5
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sun Jul 10 17:58:14 2016 +0100

    [variant.swap] Use math mode for variable "i"

commit 50d074fc6ee918d9658aee57352225cf69aa5d3f
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Sun Jul 10 17:50:36 2016 +0800

    [filesystems] Fix unmatched parentheses around references (#814)

commit d3066bfac13e674fa53f1c332f7a4e4779b24fe7
Author: Alisdair Meredith <public@alisdairm.net>
Date:   Sun Jul 10 04:55:40 2016 +0100

    [19-26] Consistent use of _v (#783)

    The library clauses have started to make inconsistent use of the _v
    variable templates for traits, in preference to directly querying
    trait::value.  This change set applies that change consistently over
    all existing wording, where there is a choice of which form might
    be used.  It does not make any changes where the _v variable is not
    available, or is being defined in terms of the corresponding ::value.

commit 7e7b6c41caffc276603ba74f72d12f122a7ca098
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sat Jul 9 15:02:55 2016 +0100

    [locale.codecvt.members] Add spaces between function arguments

commit ab44124fa5b55cc4c445926e15f55934f881142a
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Jul 9 16:59:35 2016 +0300

    [input.output,strings,utilities] Don't format informative 'see below' as code (#809)

commit 16f3af8a65762aab840e878315a71d17f1dac736
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sat Jul 9 14:37:28 2016 +0100

    Fix index entries for operator!=

commit e50e299cd02da221151413d8332ee6bc20c53912
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sat Jul 9 14:25:23 2016 +0100

    [utility] Fix declarations of in_place_index_t

commit 1ed6ec00c0badef4fbcb0a6fc1d359ad4fae9a22
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Jul 7 19:09:49 2016 +0100

    [re.regex.construct] Use tcode instead of textit

commit d51fa51a4d4063a0bd8c6137babe155990f51019
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Jul 7 19:06:46 2016 +0100

    [re.traits] Use tcode instead of textit

commit 59a605fb57251183eabb2b1268cb85448c132052
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jul 6 18:03:05 2016 +0100

    [alg.random.sample] Remove stray period.

    Fixes #797

commit 8ae8c1396a30ef880f3b1a5808f5e9dd5c622d21
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jul 6 18:02:42 2016 +0100

    [ios.base.callback] Add missing pnum

commit 7e1143cfa907a405217ba7792a4a46535b815396
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jul 6 01:15:20 2016 +0100

    [re.results.form] use code font

commit 322011bc53f589afdbe4267d1689fa52adf4a58f
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Tue Jul 5 15:50:24 2016 +0100

    [tuple.traits] Add missing pnum

commit f78c2de5b51559d89dde5f34f540ca51c1456981
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Jun 30 11:12:58 2016 +0100

    [meta.unary.prop.query] fix whitespace in alignment_of row

commit 1329a28df4c2f7b3dbc8e84675b85334cf02e767
Author: Eelis <github.com@contacts.eelis.net>
Date:   Sat Jul 9 15:07:10 2016 +0200

    [variant.visit] Remove stray colon (#810)

commit 4c8f1a7c4a77986a8838dbc34dc72ca24b67091d
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Jul 9 14:31:34 2016 +0300

    [valarray.members] Fix up index entries for named valarray member functions (#808)

    The index currently lists the named member-functions of valarray as
    if they were free functions - this adds the corresponding entry under
    the valarray listing in the index, alongside the existing entries for
    the many operator functions. It also fixes the entry for "size()".

commit cdedc854aa3b73b1a505a58f0c0b3837def1c9e3
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Sat Jul 9 18:45:41 2016 +0800

    [ratio.si] Fix typo (#779)

commit 81543ed95ccdc071cf298b3a0b2d98a521e623f0
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Jul 9 13:39:37 2016 +0300

    [dcl.spec.auto] Add 'The' to heading 'auto specifier' (#782)

commit f90ba1e46385c97ee30c6e40ce6abcbbae0cb258
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Jul 9 13:26:00 2016 +0300

    [diagnostics] Make system_error synopsis more consistent (#795)

commit 4f46b45b68973e00d732e4995f135ffe17ba0ad3
Author: Eelis <github.com@contacts.eelis.net>
Date:   Sat Jul 9 05:17:55 2016 +0200

    [stmt.if] Balance brackets and fix indentation in example.

commit b7ee7b2216102257ccad4dea2750e9b945333954
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Jul 9 06:14:48 2016 +0300

    [cpp] Fix index text for STDCPP_DEFAULT_NEW_ALIGNMENT (#784)

commit 0bc04c584447d510d4d9a58553689cd405894fa2
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Jul 9 01:44:04 2016 +0100

    [back] Install proper page marks for post-appendix backmatter

commit 46343660afd101e218aa7ec77a7bc6ba618894b0
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Jul 8 23:50:52 2016 +0100

    Generate xrefs as a glossary

commit 48375f4eceabeff09816f9314f02d70b5a084f1f
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Fri Jul 1 16:11:38 2016 -0700

    [filesystems] Add references to fs.def.pathres where "resolve" is used.

commit d91ec5fe94bb69d555940c2b0262aecd002a04be
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Fri Jul 1 16:05:01 2016 -0700

    [fs.def.normal.form] Define terms normalized and normalization.

commit 4e6c8bd3547ac3fa3e5675f9dbac1c62bc8fe868
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Thu Jun 30 16:10:11 2016 -0700

    [fs.op.absolute] Fix inconsistent coding style.

commit babea2e671c49bf8e1d5087fbb6964dca11431e2
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Thu Jun 30 16:05:54 2016 -0700

    [fs.op.proximate][fs.op.weakly_canonical] Rephrase nonsensical wording.

commit 3d6079f4c7a51e8023d18ef599bef301d7f29878
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Jun 29 00:19:17 2016 +0100

    [func.default.traits] Add cross-references

commit 3ee9d1f8c7f8d29fb0741e0eecfd259f473324e7
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 8 12:01:38 2016 -0700

    [c.locales], [clocale.syn] Fold child clause into its parent and remove
    paragraph that is duplicated between the two.

commit 993f8138ab7c07e0d6b3ef4b4f625a0f928d9a6a
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 8 12:00:37 2016 -0700

    [c.strings] Point the "see" comments for functions with different
    signatures in C and C++ to [library.c], which specifies how those
    functions behave.

commit e53963822cac2fb44d7efe3224c67a748383fbd6
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Jul 6 17:25:12 2016 -0700

    [string.ops] Move basic_string::operator basic_string_view alongside
    data() and c_str() rather than putting it in its own section.

commit dd6cf3bf2332b389306311e22a7ad500bf7fd93f
Author: timsong-cpp <rs2740@gmail.com>
Date:   Fri Jul 8 00:36:09 2016 -0400

    [class.union] Fix typo.

    s/initialiation/initialization/.

commit bbb02446b7ca948f2d84d8d18ff195f942908d9a
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Wed Jul 6 15:50:12 2016 -0700

    [meta.type.synop] Delete extra space before is_nothrow_copy_assignable

commit 2318e73d26f56a058d53a0c4ad65789dcf50cff6
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 16:11:20 2016 -0700

    [headers] Update introductory text for the C library now that Clause 17
    contains a C header synopsis.

commit 73a0fde86eb4506474c25415d4ef2fcf9dd701d6
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 16:05:48 2016 -0700

    [cinttypes.syn] Explicitly mark the intmax_t forms of abs and div as
    optional in the synopsis, to match the normative requirement.

commit c448d933adad9c705c79adfc1cb7f3ea25f7c0ab
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 16:00:51 2016 -0700

    [support.types.layout] Clarify that offsetof is based on the C standard
    library macro of the same name, now that we no longer explicitly say
    that all of <cstddef> is based on the corresponding C header.

commit 7b8c69d1fe4eae4785747842fa32127685e9b0c7
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 15:51:06 2016 -0700

    Replace the anachronism 'int f(void)' with 'int f()' throughout the C++
    standard library description and in a couple of examples.

commit bf0c6f4cd0ff9e10c5e637a751381205c6004b89
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 15:48:19 2016 -0700

    Update declarations of NULL and size_t in C header synopses to refer to
    the place where C++ gives them different meaning from C.

commit 1a62c222522ad27e189a149f7329cce1c0c651b7
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 15:36:41 2016 -0700

    [library.c] Clarify what we mean by 'restrict', since it doesn't exist
    in C++.

commit ed3c014c14b1973965567475301587d6240e8f34
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 15:35:11 2016 -0700

    Add index entries for all C standard library entities.

commit 8e4ab9cdee4399b475735b0cb39d70d8e1040969
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 15:16:41 2016 -0700

    [c.strings] Move descriptions of individual headers to the section for
    the respective header.

commit 1f22f4264428dc65607a419594842fc68c6891ac
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 15:03:36 2016 -0700

    [ctime.syn], [date.time] Delete the latter and move the former into its
    place. We don't need two descriptions of the contents of <ctime>.

commit 299f1817f14e8a186ecd1b9e12a7c1759f17a17c
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 14:58:00 2016 -0700

    Consistency fixes for C library header descriptions.

commit 011c0228045e6cf84fb95e56eec30bda74577c7a
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 14:38:43 2016 -0700

    [library.c] Consolidate the rules on the behavior of functions that
    change signature between the C standard library and the C++ standard
    library here.

commit d48b1f64507aae655c1c655ea3046083a9bbc2c6
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 14:25:34 2016 -0700

    [c.mb.wcs] Reorder after relevant C library synopses.

commit 42d8d347f7dad4116f48a7d6f07260333d30b74c
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 14:22:34 2016 -0700

    Move description of <cstdlib> out of [numerics] and into [library]. This
    is a bad home for it, but it seems to be the best bad home, as the
    portions of <cstdlib> are described in 5 different library clauses.

commit 46be71ecd68e3731b5d4943ac4c72d86ce37795f
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 13:40:22 2016 -0700

    Add cross-references from <cstdlib> synopsis to places where pieces of
    it are described, and change those places to use the formatting style
    we normally use for library entity descriptions.

commit 1b56b231f892d3b8aada4fd12f427bbb32f9c22e
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 12:30:09 2016 -0700

    [cinttypes.syn] Add missing #include <cstdint> to synopsis.

commit c44e3158fd27aa87d79d7801b4fd538da63a2c0d
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 12:27:01 2016 -0700

    [numerics] Integrate the special math functions into the <cmath>
    synopsis and add proper descriptions for the parts of the C standard
    library that we modify.

commit f4a9956a3141608ca5b408ed877da26255fcf6c2
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jul 7 11:07:14 2016 -0700

    [numerics] Remove incorrect suggestion that <tgmath.h> is specified here
    rather than in Annex D.

commit e6f109e4979ef255068eee5ed6ba99779bf8b50d
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Jul 6 14:35:06 2016 -0700

    More replacement of "Standard C Library" with the defined term "C
    standard library", and remove an outdated reference to the C Unicode TR.
    <uchar.h> is now incorporated directly from C11.

commit e9a9b52de953b0d224316b373423e272cb140cff
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Jul 4 18:53:00 2016 -0700

    Replace uses of the phrase "Standard C library" with the defined term
    "C standard library" throughout the library clauses.

commit 516d2712c5ab8926583b9249400d502afa8d95bf
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Fri Jul 1 16:31:51 2016 -0700

    [istream::extractors] Fix '.' inside reference.

commit 8c2a29598696e7b3dac5ff2d7f20f1d970649cc4
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jul 3 21:07:27 2016 -0700

    [alg.move] Fix bad linewrapping introduced by LWG2689.

commit 641a469fb9f6bcc5a817f8da3d9443751046110e
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jul 3 20:04:16 2016 -0700

    [tuple.cnstr] Fix bad line wrapping introduced by LWG issue 2549.

commit f40f23d2c9b8de9eeeb781c4e7b90d056750535f
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Jun 28 22:27:44 2016 +0100

    [stmt] Move grammar and description of 'condition' up

commit b20e63d533990375c9c3b8b0a0c590b7025aca4b
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 1 14:55:14 2016 -0700

    [dcl.decomp] Use 'interpreted as' not 'taken as' to specify how a token
    sequence should be parsed, for consistency with similar wording
    elsewhere.

commit de2bd84b59f79598f8bb6346c2879fc9e0b741bb
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 1 14:53:15 2016 -0700

    Update cross-references to decomposition declarations to point to
    [dcl.decomp] not [dcl.spec.auto].

commit 4b95f2e3e1c0dbb19a48302ad249db4de700766d
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 1 14:08:06 2016 -0700

    [dcl.type.auto.deduct], [dcl.type.class.deduct] Reverse the order of
    these two clauses so that [dcl.type.auto.deduct] is properly nested
    within [dcl.spec.auto].

commit 8daec11f020f6f84dd0e4e40d20ffb176944847a
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 1 13:56:39 2016 -0700

    [class.static.data] Fix inconsistency between rules for when a
    declaration of an inline variable is a definition and remove
    unintended implication that an inline static data member defined
    inside a class must also be defined outside.

commit 42f557b123ce1ce3dbd1c1e3c61f0f4cd72e9094
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 1 13:43:26 2016 -0700

    [dcl.inline] Consistently use teletype font when referring to the inline
    keyword and roman font when referring to the inline property of
    functions and variables.

commit 77787781dfd56343d9b7007af055a9e3886e1a73
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Jul 1 11:53:28 2016 -0700

    [algorithms.parallel.exec] As instructed by P0299R1, replace all
    occurrences of 'thread' with 'thread of execution' throughout this
    subclause.

commit f8fc0629ce634650c176fcd23b8d15fae0a00047
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Jun 30 20:08:39 2016 +0100

    [dcl.spec.auto] Disambiguate which return statements are meant

commit 326fc8a501a4f7ed1ddf6bb9b729dda86d95c00f
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Jun 28 23:46:32 2016 +0100

    [temp] Add cross-reference to "templated entity"

commit cdcabf2ee40c0332d6c16ae89126e4e9bb0e231f
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 30 18:43:26 2016 -0700

    [expr.call] Move specification of parameter sequencing out of the middle
    of wording on the conversions performed on parameters and into a
    separate paragraph. Restore note on the relative ordering of argument
    side effects and the evaluation of the function body now that it's no
    longer implied by the sequencing of the argument evaluations.
    Also fix bad "smart" apostrophe in example.

commit 3dc7b01f3d15aef86be33e935efc1dac10cc5e45
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 30 15:59:44 2016 -0700

    [class.temporary] Promote footnote to note to avoid bullets in a
    footnote, and move it to later in the clause, to a place where it fits
    the flow of the surrounding text better.

commit 4d277951eac45cdedf88d92d11652d507aba5be9
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 30 14:52:32 2016 -0700

    [dcl.init] Correct "return object" to defined term "result object".

commit ce323f0b9fbae0434904e31e324d5f7c9589ffb9
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 30 14:46:53 2016 -0700

    Add missing space in 'cv void'.

commit f454ecbe85381d18b89235c252a1654e8d7357e8
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 30 14:46:01 2016 -0700

    [expr.prim.lambda] Fix description of lambda-expressions. The expression
    itself is a prvalue, not its value.

commit b7c116c427e3a5f37f374cca6c024acd2f3c16c3
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 30 14:45:12 2016 -0700

    [expr.comma] Fix description of temporaryness of comma operator. It's
    not meaningful to talk about a value being a temporary expression.

commit 4ca5a4b5fff957feb1c93920f0f35ff9689af4ff
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 30 14:44:34 2016 -0700

    [expr.mptr.oper] The left operand of .*, not the right, should be
    required to be a glvalue.

commit 86040aee532699152e6dded8f688a57d9662d21c
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Jun 27 16:49:28 2016 -0700

    [dcl.type.auto.deduct] Remove unnecessary wording complexity from
    handling of return type deduction from void.

commit 1a0589b15b5552ea38651b3c877e8d9fcc86d5c3
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Jun 27 15:03:40 2016 -0700

    [expr.type.conv] Remove defined but unused term from class template
    argument deduction in function-style cast.

commit a4ca89a833d1af4e81d7fd3497d2ee64c2b8dbea
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jun 26 12:22:48 2016 -0700

    Update all wording referring to placement new-expressions to use the
    defined term rather than some variation of it.

commit e206374d429d33e5f7178df872a73fc5d65bae69
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jun 26 12:18:57 2016 -0700

    Use consistent style and order when listing predeclared, replaceable,
    and library-supplied overloads of operator new/delete, as suggested
    in a drafting note in P0035R4.

commit 95321805a3528aa1006bf8187e39e1f4bab00c1e
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sun Jun 26 08:13:10 2016 -0700

    [class.copy] Replace example of guaranteed elision in constant
    expressions with one that is still correct when P0135R1 is applied.

    I note, however, that the requirement here is impossible for an
    implementation to meet in general; we will need to revise the resolution
    of this core issue.

commit 77fe85dc22d31d3aa9f5a9ff7ecd3f46cff40b77
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 29 20:06:29 2016 +0100

    [associative.reqmts] use code font for q2 in Table 109

commit 707d78c25e8e96133ab40d1720803115eb3592d7
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 29 20:00:59 2016 +0100

    [unord.req] use code font for X in Table 11

commit 8bff74f11d38cf8f5b2795269c414e82f5320612
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Jun 23 21:13:47 2016 +0300

    [strings] Replace NULL with "null pointer value"

commit a15450c8cb1d13b01ead9acd30db192717848cef
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Jun 23 21:13:41 2016 +0300

    [iostreams] Replace NULL with "null pointer value"

commit 44c5364c54f8bcefe980745fcc115410d209eec7
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Jun 23 22:04:22 2016 +0300

    [macros,intro] Present example/note formatting better (#763)

commit 268f494baf2c666d01bf49159d918c7f7a8c9fa6
Author: Jonathan Wakely <github@kayari.org>
Date:   Thu Jun 23 19:05:36 2016 +0100

    [temp.deduct.call] [temp.deduct.conv] Hyphenate top-level

commit 5d8aa54a58b51d5c64d6b43beb6edbb3256d963d
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Jun 23 20:35:43 2016 +0300

    [overloading] Make operators appear in code font (#764)

commit 896b5132357bd9678cc73b8c29febf25bd31dc75
Author: Jonathan Wakely <github@kayari.org>
Date:   Thu Jun 23 14:21:17 2016 +0100

    [diff.cpp11.special] Move to [diff.cpp14.special] (#767)

commit fcdd2f6a714af4812a8b65124b2e6cb28c029df7
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Jun 23 12:11:10 2016 +0100

    [diff.cpp03.containers] Use \effect not \effects

commit d25356eced71845d70cc4cb53c515c7b69ab7740
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Jun 23 10:03:13 2016 +0100

    [fs.op.absolute] Fix table name

commit bc0e41a4711661efe45b28a0f5bee13c622e417f
Author: Alisdair Meredith <public@alisdairm.net>
Date:   Wed Jun 22 22:50:57 2016 +0300

    [strings,containers] Add iterators to index of implemenetation defined behavior (#754)

    This patch slavishly copies the tag used for array::iterator, without
    understanding if a better markup might be available.  One consequence
    is that we get two entries for basic_string_view::const_iterator.
    Another is that the index around type names appears as two sorted
    subsequences, rather than one sorted sequence.

    An additional patch will follow for the remaining implementation-defined
    types that are not present in the index, once the preferred markup is
    reviewed in this pull request.

commit 1b47dd9975c61c93897f93e8a5ea5bd1480d51a7
Author: Alisdair Meredith <public@alisdairm.net>
Date:   Wed Jun 22 22:30:42 2016 +0300

    [18-20,27] Prefer to use 'override' where appropriate (#753)

    This patch makes consistent use of the 'override' contextual
    keyword for every member function (other than destructors)
    that overrides a virtual function in one of its base classes.

    In general, this came down to one of three cases:
    1) the 'what' function for an exception class
    2) the allocation functions of a memory resource
    3) the implementation methods of a stream buffer.

    As far as I can tell, all other virtual function declarations
    in the standard library are intended as customization points
    for users, and are not overridden in the standard itself.

    Fixes #751

commit 24ad0836274dbb494f7d391d917aaf1e4f3844fa
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 19:45:00 2016 +0100

    [iostate.flags] Remove name of exception object thrown

commit 4d67e5d9437373e6bc571db74208f6cd3376d19a
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 19:40:29 2016 +0100

    [filesystems] Hyphenate POSIX-based and Windows-based

commit ad4c80452feea841b8a2e29f5fc1e6aacfdeaa2d
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 19:35:44 2016 +0100

    [fs.norm.ref] Remove redundant reference to MAC OS

commit 535ff921a4c61da91716c9e18d42ffb26cc53c24
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 19:19:09 2016 +0100

    [meta.rel] Reformat "Type relationship predicates" table

    Adjusted the column widths of the libreqtab3f environment and inserted
    line breaks.

commit 34fae9749c325302b4e659b775224cb28e3b014d
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 18:50:08 2016 +0100

    [meta.trans.sign] Fix formatting in "Other transformation" table

commit 863cbd1add491eb3cfef66d438f5ca79e3d602f4
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Thu Jun 9 22:40:42 2016 -0400

    [meta.trans.other] Reformat Other Transformations table

    This PR applies the change recommended by https://github.com/cplusplus/draft/issues/629.

    So far, I like the change giving the descriptions more room to
    breathe, but for come reason the first column has become a
    little narrower, which is messing with the format a little.

    Generally, I think this looks like a good fix, but may use a
    little more polish to get the presentation just right.

commit ed0cd287652fbe923373a5628b32f4f8cd90c7f6
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Thu Jun 23 01:17:32 2016 +0800

    [reverse.iter.requirements] Avoid 'global operators' (#442)

    These operator functions are not in the global namespace scope.

commit ddbb859ab54614b710786cf46f569541edd2fdcd
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Jun 22 20:15:34 2016 +0300

    [strings] Fix spacing around commas

commit a8ea14bfe285a99f69cbf3b57cd826fb3d03058a
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Jun 22 10:12:18 2016 -0700

    [global.functions] Replace "global and non-member functions" with less
    redundant, but no less accurate, term "non-member functions".

commit 571412f6aff170a5aab1f7472526b7e9459f556b
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 16:06:11 2016 +0100

    [forward.iterators] Capitalize note

commit dc7918e42ddf76a5c9299775128ea9d75f960374
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 15:58:41 2016 +0100

    [lex.key] Move note after table

commit 28cea19640223d5aa403419813eef0be0371287f
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Jun 22 15:48:26 2016 +0100

    Fix stray punctuation after notes.

commit c68346dc2e6dcb912f162bafb9f86c12f8bb3713
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Jun 17 18:27:30 2016 +0100

    [utilities] Remove std:: from normative wording

commit 4b58cb2262f38475f726aa52724065df537f40ec
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Jun 17 18:22:09 2016 +0100

    [iterators] Remove std:: from normative wording

commit 5e827de13e93306778dec7a6933da16acb079e57
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Jun 17 18:22:04 2016 +0100

    [strings] Remove std:: from normative wording

commit e0b87fbbe4c2050187ad5b4b1e859a111790fca3
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Jun 16 20:08:25 2016 +0100

    [Readme] Fix isocpp link for DR submission (#756)

    Fixes #755.

commit d335c89932b3911b5405dd7ad15bf8530d2e884d
Author: AaronBallman <aaron@aaronballman.com>
Date:   Thu Jun 16 14:22:21 2016 -0400

    [dcl.enum], [class.mem] Clarify the definitions for layout-compatible and fix their index entries (#700)

commit 820626bf19f2df385d91d0d6c31293f136a9573b
Author: Johannes Laire <johannes@laire.fi>
Date:   Mon Jun 13 20:50:08 2016 +0200

    [basic.lookup] Fix typos

commit d7ecb6f7e56001d78747ea6f6a9782b704512d4e
Author: Alisdair Meredith <public@alisdairm.net>
Date:   Mon Jun 13 21:37:11 2016 -0400

    [18,20] Consistent indexing of simple exception types (#750)

    Appply a simple, consistent pattern to the index entries, including
    th index of implementation defined behaviors, for the library types
    that derive from std::exception.

    In some cases this means adding entries, in others removing extra
    nested implementation-defined entries that are redundant since the
    addition of the index of implementatio defined behaviors.

    A few cross-references were added or corrected as part of this
    process.

    Further work to make the presentation and specification of these
    types probably requires LWG issues.  In particular, bad_any_cast
    is woefully underspecified.

commit f3a3c85b9957f35ddc7b5290cf8367b2cb78bd0e
Author: Alisdair Meredith <public@alisdairm.net>
Date:   Thu Jun 9 21:02:51 2016 -0400

    [valarray.sub] Fix error in example code (#746)

    Fixes #160

commit 6d3936c3f904622757e84df28852373079822d48
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Jun 9 14:35:52 2016 -0700

    [libindex] Rename index entries from "bad_X, bad_X::what, implementation
    defined" to "bad_X, what, implementation defined" for consistency.

    Add some missing index entries for class members that are themselves
    classes.

commit 28f8551018cb975b18e3ddf95fed50e679b30c79
Author: Jonathan Wakely <github@kayari.org>
Date:   Thu Jun 9 22:27:33 2016 +0100

    [bad.cast], [bad.exception] nest index entries consistently (#744)

commit da7277645a807ccbedd12fda104cbd9b78987eca
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Jun 9 12:54:00 2016 +0100

    [allocator.adaptor.members] fix index entry for destroy

commit 05521fa5a364ba59a0eeb080cafb8ba95830aa47
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Wed Jun 8 19:53:17 2016 -0400

    [18-28] Fix index entry for constructors

    The preferred way to list constructors in the index is under the
    non-code font term 'constructor', but many classes retain old
    text that lists the constructor under the class name as the same
    class name, in a code font.  Worse, there are quite a few classes
    that have fallen into a hybrid approach, with both listings, which
    can be confusing. This change-set should catch every constructor
    indexed in the old style and consistently transform it to the new.

    One additional fix is that allocator_traits mis-indexed the static
    member functions 'construct' and 'destroy' as the plain-text
    constructor and destructor.  This patch correctly indexes them as
    their correct name, in a code-font.

commit e47197014cbef9421b09d2180cab8f37a55658c7
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Wed Jun 8 23:27:37 2016 -0400

    [support.runtime] Fix name of stdarg.h in index

    Simple typo where the index (but not the main text) refers
    to <stdarg.h> as <staarg.h>.

commit 87975172ae653b8bdeb6e582a060cd46b91ab377
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Wed Jun 8 21:19:07 2016 -0400

    [18-27] Remove tcode from index entries

    Several old index entries use '\tcode' to force a code
    font on their sub-entry.  This is no longer necessary,
    as the LaTeX scripts produce the correct font for an
    '\idxcode' entry.  However, using '\tcode' inconsistently
    will produce duplicate entries, and entries that do not
    sort correctly.  This change set consistently applies
    '\idxcode' in preference to '\tcode' to eliminate the
    redundant and mis-sorted entries.

commit a167f5c7a25e54432218847f5109703ef76876fb
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Jun 8 19:14:42 2016 +0100

    [compatibility] Add compatibility notices for pp-number (#713)

commit 13b57f74b8b9aac71e4cabe186b16c60670c2c71
Author: Sergey Zubkov <cubbi@cubbi.com>
Date:   Thu Jun 2 23:03:43 2016 -0400

    [unord.req] p12 should refer to key_eq(), not key_equal()

commit 41340cd5542959085a52449ce5f249534c8314ea
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Wed Jun 8 08:46:33 2016 -0400

    [time.duration.comparisons] Fix index entry for duration operator<

    The index entry for 'operator<' of the 'duration' class template is
    associated with an unknown 'idxl' type, instead of 'durtation'.

commit ee583454f6f9e5e3c320d0a8e6dc18082ffed07d
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Wed Jun 8 09:14:16 2016 -0400

    [string.view.comparison] Fix index for basic_string_view operators

    The first issue is that operator<< does not group in the index with
    other definitions for operator<<, which use an index key of
    operator\shl.

    The second issue is that operator<< was the only operator indexed
    under the 'basic_string_view' key, where the precedent fro basic_string
    and other types is that the free-function operators are still indexed
    under their respective class entry.

commit 15a68689e8dd9f2ba82f29c37d4fa3e4c9c461ee
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Wed Jun 8 08:35:27 2016 -0400

    [allocator.adaptor] consolidate memory utilities]

    This patch simply moves the scoped allocator clause to
    be adjacent to the other memory and allocator clauses
    for a more consistent sub-organization of clause 20.

    The patch looks pretty awful thanks to the diff
    algorithm treating it as a lot of interspersed edits,
    where in fact is way a single cut/paste for the bulk
    of the test (plus a second one-liner for the clause 20
    table of contents).

commit c8f1863b67ce555c7576faddb50bd8707bfe0bee
Author: Alisdair Meredith <public@alisdairm.net>
Date:   Wed Jun 8 01:35:02 2016 -0400

    [18-30] Replace typedefs with alias-declarations (#704)

    This set of changes replace (almost) all use of 'typedef' in the library
        with a type alias instead:
            typedef Original NewName;
         ->
            using NewName = Original;

        Attention was paid to retaining table-like formatting where present, which
        is worth reviewing in case I made idiosyncratic choices.

        Clause 29 [atomic] was specifically ignored, as there is a desire for the
        contained code to look as close to a C compatible header as possible.

commit 2a5d9721aa153e7fcea4ab7ea21333b18dd3d001
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Tue Jun 7 14:46:52 2016 -0700

    [pairs.pair] Fix indentation of Remarks: paragrah.

commit 92c3395bb23f57b9a99d389b3f5aabead337c865
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Mon Jun 6 14:00:38 2016 +0100

    [fs.op.permissions] Combine adjacent tcode regions

commit 256d202e61f4317f30ae839125e714e8192690d4
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Mon Jun 6 13:55:46 2016 +0100

    [fs.op.permissions] Escape unary complement operator

commit deffb9ed5457d4fa5b0fe44d0fd28c1f8c3ab723
Author: timsong-cpp <rs2740@gmail.com>
Date:   Thu Jun 2 15:09:08 2016 -0400

    [lex.pptoken] fix term

    "preprocessor token" -> "preprocessing token"

commit a2b62a8c3aa1b334e0506d309b3bfaffd47d0827
Author: timsong-cpp <rs2740@gmail.com>
Date:   Thu Jun 2 12:16:44 2016 -0400

    [class.path] escape backslash in character literal

    Fixes #731

commit 6be63b64af6c2a6cb40ddf76268dd6d5297f5394
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Tue May 31 10:24:38 2016 -0700

    [expr] Remove outdated, inaccurate, irrelevant note on the actual
    behavior of signed integer overflow on "most existing implementations".