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

2016-03-18
Richard Smith
Google Inc
<cxxeditor@gmail.com>

Acknowledgements

Very special thanks to Dawn Perchik, who performed the edits for many of the motions moved at Jacksonville, to Jonathan Wakely, who performed many of the edits for integrating the Filesystem TS, and to Walter Brown, for providing the Mathematical Special Functions IS in LaTeX format. Any errors are mine.

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

New papers

Motions incorporated into working draft

Core working group motions

CWG motion 1: Core issue resolutions from 14 issues applied, resolving 15 issues:

CWG motion 2: Core issue resolutions from 48 issues applied, resolving 49 issues:

CWG motion 3: P0188R1 "Wording for [[fallthrough]] attribute"

CWG motion 4: P0189R1 "Wording for [[nodiscard]] attribute"

CWG motion 5: P0212R1 "Wording for [[maybe_unused]] attribute"

CWG motion 6: P0017R1 "Extension to aggregate initialization"

CWG motion 7: P0170R1 "Wording for constexpr lambda"

CWG motion 8: P0036R0 "Unary folds and empty parameter packs"

CWG motion 9: P0184R0 "Generalizing the range-based for loop"

CWG motion 10: P0018R3 "Lambda capture of *this by value as [=, \*this]"

CWG motion 11: P0138R2 "Construction rules for enum class values"

CWG motion 12: P0245R1 "Hexadecimal floating literals for C++" (with normative correction, see below)

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

Library working group motions

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

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

LWG motion 3 applies to the Library Fundamentals TS

LWG motion 4: P0024R2 "The Parallelism TS should be standardized"

LWG motion 5: P0226R1 "Mathematical special functions for C++17"

LWG motion 6: P0220R1 "Adopt library fundamentals v1 TS components for C++17" (incompletely applied, see below)

LWG motion 7: P0218R1 "Adopt the file system TS for C++17"

LWG motion 8: P0033R1 "Re-enabling shared_from_this"

LWG motion 9: P0005R4 "Adopt not_fn from library fundamentals v2 TS for C++17"

LWG motion 10: P0152R1 "constexpr atomic::is_always_lock_free"

LWG motion 11: P0185R1 "Adding {nothrow_}swappable traits"

LWG motion 12: P0253R1 "Fixing a design mistake in the searchers interface"

LWG motion 13: P0025R0 "An algorithm to "clamp" a value between a pair of boundary values" (see below)

LWG motion 14: P0154R1 "constexpr std::hardware_{constructive,destructive}_interference_size"

LWG motion 15: P0030R1 "Proposal to introduce a 3-argument overload to std::hypot"

LWG motion 16: P0031R0 "Proposal to add constexpr modifiers to reverse_iterator, move_iterator, array and range access" and LWG2296 "std::addressof should be constexpr"

LWG motion 17: P0272R1 "Give std::string a non-const .data() member function"

LWG motion 18: P0077R2 "is_callable, the missing INVOKE related trait"

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

Notable changes to papers as moved

CWG motion 1, issue 2017

Corrected normative wording suggesting that reaching the end of a constructor, destructor, or function with cv-qualified void return type would result in undefined behavior. These cases were not covered by the wording in the issue because they are not functions with a void return type.

CWG motion 12 (hexadecimal floating literals)

The wording for this proposal omitted an essential update to the pp-number grammar production, which is necessary to avoid a literal such as 0x1.0p+0 being split into three tokens at the + character. The grammar has also been editorially refactored to reduce duplication between hexadecimal floating literals and hexadecimal integer literals.

LWG motion 4 (parallelism TS)

std::sequential, std::par, and std::par_vec were not listed in the synopsis of any library header. They have been added to the synopsis of <execution_policy>, based on the clear intent of their placement within the wording.

[execpol.synopsis] was renamed to [execpol.syn] for consistency with other synopsis subclauses.

[algorithms.parallel.exec]: fixed incorrect claims that certain well-formed constructs with defined (but undesirable or unspecified) behavior are an error, or undefined, in examples.

[exception.list]: added missing synopsis for <exception_list> header.

[numerics.defns]: rephrased definition of GENERALIZED_SUM in terms of GENERALIZED_NONCOMMUTATIVE_SUM to reduce redundancy.

Contrary to the editing instructions in section 25.NaN.5 (sic), parallel overloads of for_each and for_each_n were not added to the synopsis of <algorithm> as they would conflict with the overloads added in section 25.2.4.

LWG motion 6 (lib fundamentals TS)

The changes to shared_ptr have not been applied, as it is unclear exactly what changes should be made. The TS provides alternative wording for some subsections, but some of the differences are due to changes in the TS and some are due to changes in the working paper. Replacing the sections in the working paper with the sections from the TS would regress some functionality, so this portion of this motion has been returned to LWG for a more precise specification.

LWG motion 11 (is_{nothrow_}swappable)

Changed new uses of is_{nothrow_}swappable<T>::value to instead use is_{nothrow_}swappable_v<T>.

LWG motion 13 (clamp)

Note that the paper voted into, and applied to, the working draft was P0025R0, not the most recent draft of this paper, P0025R1. This appears to be an oversight; LWG is encouraged to prepare an issue to apply the changes from P0025R0 to P0025R1.

LWG motion 17 (non-const std::string::data)

Fix Annex C change to correctly describe the change that was made.

Minor editorial fixes

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

commit f487d12b9834740c09bc92a8de45e9a712648089
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Sat Mar 19 09:17:19 2016 -0700

    Minor editorial fixes throughout the library found in review by Dawn Perchik.

commit f45829932dcc765578acb25667451a7b398bbde5
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Mar 18 03:06:42 2016 -0700

    [headers] Reflow header table to 4 columns.

commit e59a2dd20a8c7badb492a18589483fbd378594c9
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Mar 18 02:57:01 2016 -0700

    [input.output] Add <filesystem> to summary of this Clause.
    [headers] Add <filesystem> to list of library headers.

    Fixes #648

commit 0fead0abfc147c5560b80e424d8128c1a613934b
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Mar 18 02:13:16 2016 -0700

    [fs] Remove apparent claim that FAT is the only filesystem used on
    memory cards or flash cards. Even if that were true, it's not relevant
    to the C++ standard.

commit 5cb56ad5e3626f40a7d5d5962806a895cd61c4a2
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Mar 17 10:46:52 2016 -0700

    [fs] Minor fixes: formatting, style issues, over-reaching notes.

commit 00697914242de485ce611da25e0f482f57882ca6
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Thu Mar 17 22:44:33 2016 -0400

    [definitions] alphasort remaining library definitions

    On more careful review, a couple more definitions were
    mildly out of order.  This patch properly sorts the
    whole of clause 17.3 [definitions].

commit 2d4a73fe2aadf7bb1ba3f3c7f0b4984e80ecc2f2
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Thu Mar 17 21:17:44 2016 -0400

    [defns.const.subexpr] Place defintition in alphabetical order

    The defintions introduced in clauses 1.3 and 17.3 are
    ordered alphabetically, other than the trailing
    definition for 'constant subexpression', that I am
    guessing was added at a later date.  This change
    simply moves it into the correctly sorted place in
    the sequence.

commit d0755fad96a62af94691adf065b5864530cc611a
Author: Zhihao Yuan <lichray@gmail.com>
Date:   Thu Mar 17 20:09:02 2016 -0500

    [dcl.init.aggr] Fix an example in extended init.

commit 5450aabc5d3a434a4beb9d0577ddb4bc0358718a
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Mar 17 09:30:23 2016 -0700

    [func.not_fn] Use teletype font for concept name.

commit 864d1f8107436b7d9b0d7719e2e47944f3b4b338
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Mar 17 09:14:25 2016 -0700

    [alg.clamp] Add clamp to <algorithm> synopsis and reorder it before
    lexicographical comparisons to match the synopsis order.

commit 7844267fee0e7c745be0af01754a7d64bf7f7c55
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Mar 17 07:59:09 2016 -0700

    [func.searchers.boyer_moore_horspool.creation] Fix typo
    boyer_moore_searcher_horspool and manually wrap overfull hbox.

commit f1fb15be9c46e4662d2e3af1bfe3e70d8612bf97
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Thu Mar 17 07:20:39 2016 -0700

    [utilities], [containers] Replace 'is_nothrow_swappable<T>::value' with
    'is_nothrow_swappable_v<T>' and likewise for 'is_swappable'.

commit f44bf31c6ad300683df2b810ee46ec95f5ecab15
Author: Alisdair Meredith <alisdairm@me.com>
Date:   Thu Mar 17 10:14:49 2016 -0400

    [diff.cpp11.expr] Move removal of bool++ from C++14 compatibility annex to C++17 annex

    This change was clearly introduced in C++17, at the same meeting
    as removing the meaning of the register keyword.  I can see no
    Core issue tied to this removal being resolved as a DR against
    14 or earlier.

    I have confirmed that paper p0002r1 applied this to the C++17
    annex, but was listed as a change in annex D rather than clause
    5 - the latter change seeming the consistent editorial policy
    for removed Core features, so retained.

commit 6914707917b05ad4e4e46b6eca015d1d799f651e
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Mar 16 15:47:27 2016 +0000

    [fs.def.parent] Split into two definitions using \\defncontext

commit 971cbbc8986c11bceba95e5bfec1547651888cc0
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Mar 17 13:46:00 2016 +0000

    [filesystems] Adjust table layout and references

commit e9e443ad270f5b4c16c525dbeff7dd1ed4fdf7f0
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Mar 17 13:29:12 2016 +0000

    [dcl.attr] Fix wrong source encoding

commit 63c062fbf8eb7e07016f5e0bf5f96fd460f6c01c
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Mar 14 14:37:24 2016 -0700

    [expr.prim.lambda] Add missing linebreak before new
      simple-capture ::= *this
    grammar production.

commit c13d24e396a587a545bab9b5347f1bf7233b3f86
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Mon Mar 14 11:23:40 2016 -0700

    [expr.prim.lambda] Use \CppXIV instead of \Cpp14.

commit 2fe4e865014b4eb1b10f1bf24c6ce2ad13ea0528
Author: Ondřej Majerech <majerech.o@gmail.com>
Date:   Wed Apr 15 00:44:32 2015 +0200

    [lex, dcl.decl] Use \nontermdef and \grammarterm more consistently.

commit 1da521ef8a399f4c1d6bb30893fe18a7fcaafc84
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Mar 12 17:47:32 2016 +0000

    [strings] Formatting and whitespace harmonization

commit 924863b47bc3e5be39142126baa2ce1096a5659e
Author: cpplearner <cpplearner@outlook.com>
Date:   Sun Mar 13 01:31:02 2016 +0800

    [valarray.members] add missing \end{itemdescr} and \begin{itemdescr}

commit 332b3edda5424496542e406d8ec4d272198edad4
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Mar 8 13:23:35 2016 +0000

    [utilities] Add some hyphenation hints for long inline expressions

commit d598cb6588b550709593a14721c091cadc976d6a
Author: FrankHB <frankhb1989@gmail.com>
Date:   Sat Mar 12 18:12:50 2016 +0800

    Fix wrong reference

    Change for `&&` in [diff.cpp03.expr] should refer to [expr.log.and] rather than [expr.log.or].

commit 6139ef913c12760c15346a04aac92d01013f6509
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Mar 11 15:17:00 2016 -0800

    Move all std::basic_string subclauses under [string.classes] in
    preparation for adding a sibling clause for string_view.

commit 69bc5713208c0a30c30913d5112ed8512e8c7e2d
Author: MikeHerrick <mjh@edg.com>
Date:   Thu Mar 10 14:18:23 2016 -0500

    Add missing "*" in example.

commit 4f0b604ca12ffa960a923473b2106e973d42a18d
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Mar 10 01:09:12 2016 +0000

    [macros] Make \Cpp work in PDF bookmarks again

commit 4f094359f43e7b97afbe7038e89adde78161db91
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Mar 9 17:04:09 2016 -0800

    [lex.ppnumber] Add p+ and P+ as valid components of a pp-number token.
    This edit was missed from P0245R1, but was intended and is a fundamental
    part of the proposal.

commit 9ca4d1dccf2a09261de94b99ea3c78d1cd4b1228
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Mar 9 17:02:46 2016 -0800

    [lex.literal] Reuse hexadecimal-prefix and hexadecimal-digit-sequence to specify the form of a hexadecimal-literal.

commit 875037be77746139e90f02da33700baf014984b3
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Mar 9 15:25:18 2016 -0800

    [dcl.attr] Reorder [[noreturn]] after [[nodiscard]] to put attribute sections in alphabetical order.

commit aab51a5c2e57779b55a9d7cf59521512017f4469
Author: Jakub Wilk <jwilk@jwilk.net>
Date:   Wed Mar 9 16:47:38 2016 +0100

    [temp.variadic] Fix typo "evalutes"

commit aae5ada0b13aa9ae618ada206be1d8bbb499691b
Author: Jakub Wilk <jwilk@jwilk.net>
Date:   Wed Mar 9 16:45:08 2016 +0100

    [re.alg.match] Fix typo "otherwis"

commit 66eaea094e5b8e1d3aaf85827f75dc0f4bba1af6
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Mon Mar 7 23:16:29 2016 +0000

    [diff] Use \Cpp macro

commit 7a33e38692f60fa5968c4d751899319b3a57fedf
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Dec 5 17:05:01 2015 +0000

    [macros] Change \Cpp macro to look nicer

commit 43b65fb672406bcaaef4cd18d77b2e8846513414
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Mar 4 23:21:26 2016 +0000

    [lex] Remove spurious whitespace

commit be071acabed55cbcd88d96c6f17ba7d0c1bad158
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Dec 5 18:39:22 2015 +0000

    Use textual angle brackets in body text

commit cc003c2ba4ffb430a85823a237e6e6a3173fee0c
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Mar 2 06:46:52 2016 -0800

    [dcl.align] Remove "other than <list of types>" from example that
    actually works for all types, per CWG discussion.

commit 97b037322d5bd76ca32ee4376e201261b16cb94b
Author: Dawn Perchik <dperchik@embarcadero.com>
Date:   Tue Mar 1 17:16:51 2016 -0800

    Unify the formatting of "Equivalent to" be consistent.

commit d8463494a40c6d733c22ff4850db0dbe31813b43
Author: faisal vali <faisalv@yahoo.com>
Date:   Sat Feb 27 11:41:31 2016 -0600

    Delete the redundant 'update' when describing actions upon independent memory locations.  The definition of 'access' includes modifying a location per 1.3.1/access.

commit f35f6e7c5e2a46965b5dff18eb8f7ed50145f910
Author: Jakub Wilk <jwilk@jwilk.net>
Date:   Thu Feb 25 13:46:46 2016 +0100

    [futures.shared_future] Remove duplicated word "shared"

commit cdd1377fc24d02d784d83ad83fae0f9610e8971b
Author: Jakub Wilk <jwilk@jwilk.net>
Date:   Thu Feb 25 13:51:10 2016 +0100

    [conv.qual] Fix typo "desecender"

commit 8ebbcaebe13ed8ab0545cdf54c4f46e4d7130338
Author: Jakub Wilk <jwilk@jwilk.net>
Date:   Thu Feb 25 13:52:34 2016 +0100

    [diff.class] Fix typo "choise"

commit 66f77b68bda58169ec65a1095a68d6e483bbb6f4
Author: Kazutoshi SATODA <k_satoda@f2.dion.ne.jp>
Date:   Sat Feb 13 20:42:56 2016 +0900

    Uniform "ones' complement" and "two's complement"

    "one's complement" is inconsistent with the C standard.
    "1's complement" and "2's complement" are also inconsistent.

commit 4ad54d82b27e441ead663c692c65597ee8a96254
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Wed Feb 10 22:06:15 2016 +0100

    [gram.key] Remove unreferenced original-namespace-name nonterminal.

commit 7838080df6f4dcb2784f432bfd5abe09391fc163
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Wed Feb 10 22:04:55 2016 +0100

    [gram.key] Make BNF for namespace-name the same as in [gram.dcl] and [namespace.def].

commit 7798b417ae3a512281e62aa779882fbaf6fbf780
Author: Marshall Clow <marshall@idio.com>
Date:   Tue Feb 9 14:40:52 2016 -0800

    Swap effects of `basic_regex::operator=` and `assign`

    Currently, `basic_regex::operator=` is defined in terms of assign. This is different from what `basic_string` (and possibly others) do.
    Swap the descriptions so that `assign` is now defined in terms of `operator=`. No functional change to either is intended.

commit 820981d9b2ac715c926322f649c6ae3ba56bce08
Author: FrankHB <frankhb1989@gmail.com>
Date:   Sun Feb 7 00:16:37 2016 +0800

    [unique.ptr.runtime.ctor] Fix format

    Add missing `\tcode` in [unique.ptr.runtime.ctor]/2.2.

commit be271b03bf445565a1d8bfcdd013b394f81acb5e
Author: Marshall Clow <marshall@idio.com>
Date:   Thu Feb 4 10:22:20 2016 -0800

    Remove incorrect "shall"

    while looking at LWG issue #2589, I noticed that L2554 says "`match_results` shall satisfy the ...".
    In general, we use "shall" to place requirements on user code, not on library code.
    Change to just say "satisfies", rather than "shall satisfy"

commit 1aa9db108aed9defea71e226399e05e1717e887f
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Feb 1 14:48:04 2016 -0800

    [temp.res] Fix self-contradiction in paragraph describing when a template
    with valid specializations can be diagnosed.

    Also convert to bulleted form for clarity.

commit a9c79d87f28c0ee53179ce46b97c23af92e67dfc
Author: Hubert Tong <hstong@ibm>
Date:   Fri Jan 29 12:54:41 2016 -0500

    [terminate] Fix typo "terminate_handleri"

commit a495f2445eaf2eb5c4c7562734fd2e346b8cbbdb
Author: morinmorin <mimomorin@gmail.com>
Date:   Wed Jan 27 00:45:41 2016 +0900

    [support.types] Remove "field", which is not a defined term in C++.

commit e69c75e23694c67b6351b75eae2627ef9dcd4e44
Author: S. B. Tam <cpplearner@outlook.com>
Date:   Tue Jan 26 23:33:55 2016 +0800

    [defns.const.subexpr] Remove superfluous words

commit 356f765cc2ff2623d6de4855956d0abfaae5ec9a
Author: Stephan Bergmann <sbergman@redhat.com>
Date:   Mon Jan 18 17:04:06 2016 +0100

    Missing closing parenthesis

commit b91c5766274ec1c60b5e90b1258f067bb9272b14
Author: Aaron Ballman <aaron@aaronballman.com>
Date:   Thu Jan 14 10:59:48 2016 -0500

    Adding a note about what a member subobject is

commit d50dd6328c03377e382718d8dae8696ac1028af7
Author: Aaron Ballman <aaron@aaronballman.com>
Date:   Mon Jan 11 15:38:15 2016 -0500

    Making identifier label into a definition.

commit f56239c3df9c4a3ed21b6382e1af66f2c24872e5
Author: timsong-cpp <rs2740@gmail.com>
Date:   Sat Jan 9 12:56:49 2016 -0500

    [expr.const] adjust note

    Array bounds now use "converted constant expressions of type std::size_t", not integral constant expressions.

commit 87ef71b8e72c5867bfb6d2f7ea59c0b459fc17fe
Author: Frank Columbo <columbo@gmx-topmail.de>
Date:   Sat Jan 9 17:24:05 2016 +0100

    [dcl.type.cv]/6 "program behavior" vs "behavior"

    [dcl.type.cv]/6 reads

    > If an attempt is made to refer to an object defined with a volatile-qualified type through the use of a glvalue with
    a non-volatile-qualified type, the program behavior is undefined.

    This is probably meant to use the much more idiomatic phrase "the behavior is undefined". A distinction between well-definedness of the program's and the implementation's behavior would presumably be inappropriate, anyway.

commit 9c123b4655276a806d218d28107c76d5f7c9bda9
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed Jan 6 11:27:10 2016 -0800

    [stmt.label] Clarify what it means for labels to be in their own name space.

commit 09b0265c5f194f91ae8b9a28781e13eff29c6d67
Author: Sergey Zubkov <cubbi@cubbi.com>
Date:   Fri Jan 1 20:39:22 2016 -0500

    [c.files] cinttypes synopsis refers to SCNX* macros which do not exist

commit de0bfd210a4f6837c13a9a846219922f45b4ffe1
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Mon Dec 21 20:30:56 2015 +0000

    [macros, atomic] Align placeholders

commit 2e0156c630f10131121b2b485b171b3c59354654
Author: Arcoth <columbo@gmx-topmail.de>
Date:   Mon Sep 28 22:04:25 2015 +0100

    [over.best.ics] Fix a typo in "user-defined conversion sequence"

commit 5add43af6ed8219f156ceb5ffc0a02b6ca6cd613
Author: Sergey Zubkov <cubbi@cubbi.com>
Date:   Wed Dec 16 22:49:10 2015 -0500

    [diff.library] add missing NULL <cstdio> and correct counts

commit f09023e775f4aa827efed9b7bf04c4b01f76f16b
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Dec 19 13:45:03 2015 +0000

    [algorithms] Improve typographic consistency of complexity expressions

commit b1f17ea952a582dc028c27094e205c98bf48d6b2
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Dec 19 00:01:18 2015 +0000

    [complex] Clarify the range of return values of log

commit 176ac169e3a9637bd8a029ac4b5afe6df3f963f6
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Dec 18 23:59:06 2015 +0000

    [complex.numbers] Make whitespace and capitalization more consistent

commit 1810a1c177f57893c078ab506a283dc64a6e6a7b
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Dec 18 21:10:08 2015 +0000

    [alg.transform] Relayout list of requirements as itemization

commit 98ffdab9bcb02757b5dd3cdaa3be78fe31bde8fc
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Dec 18 14:37:46 2015 +0000

    [macros] Add space into \range and remove preposterous linebreaks.

commit 0475290dfbba9bfe1df4056a9b8e4d60299fc5a2
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Dec 11 15:38:00 2015 +0000

    [atomics] Remove incomplete mention of "inttypes.h" and reword table headers

commit a7d10e342fe482e84c0379881842de8b0b136fbf
Author: K-ballo <k@fusionfenix.com>
Date:   Sat Nov 21 21:59:33 2015 -0300

    [futures.async] Use code font for "std::async"

commit ab47599ef9fbcb3682de414be55315c1c6be5a92
Author: Stephan Bergmann <sbergman@redhat.com>
Date:   Thu Aug 21 15:16:07 2014 +0200

    Typographic fixes, spacing after \opt

    * occurrences of "\opt \terminal{" apparently always require "\opt{}" to not eat
      the intervening space (despite the \xspace in the definition of \opt)

    * cleaned up two occurrences of "\opt\ " (in

        noptr-abstract-pack-declarator \terminal{[} constant-expression\opt\ \terminal{]} attribute-specifier-seq\opt\br

      in declarators.tex and grammar.tex) to consistenly use "\opt{}" instead

    * cleaned up two occurrences of "\opt{}" (in

        pp-tokens\opt{} new-line

      in grammar.tex and preprocessor.tex) that did not need the "{}"

commit 4926f71c3749dacf3a6ee3b6d34cfc110e66c48b
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Dec 11 11:20:56 2015 +0000

    [lib-intro, utilities] Apply \placeholder macro

commit 63305182f3c7efba1dbcaf35d1799e2fc95611b4
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Dec 11 10:37:01 2015 +0000

    [iterators, locales] Apply \placeholder macro

commit 79d9ef81fce6ac8c6288a442a7f3a806111cd239
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Tue Dec 8 14:30:52 2015 -0800

    [basic.link] Reword sentence to make it more obvious how it's supposed
    to be parsed.

commit 439e6dd8689cf87b1f69622bdf85595d715e6740
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Dec 5 13:16:11 2015 +0000

    [utilities] Whitespace fixes around punctuators

commit f370968913b102a864b8e884d9dad7d7ad698ee4
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Dec 5 13:43:15 2015 +0000

    [diagnostics] Whitespace fixes around punctuators

commit 45a0bac65d40819ac7b8c776035871790545d21a
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat Dec 5 13:40:00 2015 +0000

    [containers] Whitespace fixes around punctuators

commit 985442177aeff5266ca61c00251b1817241e3df1
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Aug 1 22:11:23 2014 +0100

    [localization] Change bold-slanted font to simple italics. This removes
    LaTeX "missing font" warning and is also perfectly sufficient to mark
    "variable code". Apply consistently to a second use case, too.

commit f52687ef470178f0499b575b01eaf407a5d579bd
Author: timsong-cpp <rs2740@gmail.com>
Date:   Fri Dec 4 23:33:15 2015 -0500

    [func.wrap.func.con] Fix error in note

    This note should be talking about the callable object being wrapped, i.e., f, rather than its "target", which makes no sense for arbitrary callable objects. This seems to be a copy/paste error from the very similar note in the copy constructor's description a few paragraphs above.

commit 9ff5696dcdaa08ff5a45a09674d72798c77beb36
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Dec 4 18:39:47 2015 -0800

    [class.inhctor.init] Fix typo in example.

commit 1a8c2e9664479485f6a007d112f3e3a2582af259
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Dec 4 18:18:44 2015 -0800

    [class.inhctor.init] Add missing closing paren from P0136R1.

commit 4839a73c30a2647e09094c0a513a5ccb9d715046
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Dec 4 18:01:40 2015 -0800

    [containers] Fix whitespace issues in container overviews.

    Replace '> >' with '>>' in template parameter lists.
    Fix horizontal alignment issues after /implementation defined/ types.
    Make horizontal alignment within "types" sections consistent across all
    the container types.

commit ee12083756d86a993993b9fce4554bde6250048d
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Dec 4 16:53:34 2015 -0800

    [stmt.ranged] Repeat grammar snippet to clarify what we mean by a
    "range-based for statement", and improve formatting to match that of
    [stmt.for].

    Also add some missing italics for grammar terms in [stmt.for].

commit 1d77bb33667df24eeff26cf09b94840e7daadbce
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Apr 14 17:06:15 2015 +0100

    [containers] Make intra-synopsis comments consistent

commit 348289cab8b6b915b74097349cebe502b44941d4
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Nov 25 20:25:59 2015 +0000

    [propagation] use code font for exception_ptr

commit 6db40e3d34384a12af641ffb969ebe369977e0cf
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Nov 23 17:16:26 2015 -0800

    [replacement.functions] Remove reference to sized nothrow operator
    delete functions, which were removed by LWG2458.

commit fddf2bf31c36a037cb309966996779c026f5cd68
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Nov 23 17:07:01 2015 -0800

    Fix alignment issues involving /see below/ and /implementation-defined/
    placeholders in library text.

commit 5ca060ccacdcf956dca0827df6e71a84a34a05a7
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Mon Nov 23 16:24:41 2015 -0800

    Fix horizontal alignment around /unspecified/ placeholders in the library.

    This adds the \itcorr command which can be used to insert spacing
    corresponding to the width of the italic correction for the current
    font (and \itcorr[-1] which can be used to remove said spacing).

commit 6ff1290d603e56e18e452c490feeaa5f525f68b0
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Mon Nov 23 20:54:13 2015 +0000

    [xref] Update xrefs following 7bcdb21 and 3449445

commit 34494450b68ba9e2cb3dc8650fc2cf27277faef4
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Nov 20 21:02:06 2015 +0000

    [diagnostics] Turn synopses into numbered sections

commit 7bcdb21bb22d62c61cd45fc811e141981bf39d37
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Nov 20 20:40:16 2015 +0000

    [support] Turn synopses into numbered sections

commit 36c13aa344d35ddfcf9410f92dcfcf0051cf95dc
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Fri Nov 20 12:20:16 2015 +0000

    [library] Fix index entry

commit f76be1182f5fb5aeaef1ea92de65e2109d0230e7
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Thu Nov 19 21:18:54 2015 +0100

    [except.ctor] Remove broken and unnecessary index entry.

commit be24c457b2f6bdf0bd709cbdf082ca648619f4de
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Sun May 10 18:32:55 2015 +0200

    [time.clock.system] Remove periods from impldef index entries.

commit 325f7dbd48b688120e6ee06e395831cca9b54a5e
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Sun Apr 19 23:39:13 2015 +0200

    [defns.blocked] Use correct character for index subentry.

commit e0d53e979ce2c45350f94a25a8a8a4d9819a7714
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Sun Apr 19 22:19:22 2015 +0200

    [dcl.ref] Move an index entry closer to what it indexes.

commit aa8c0b3cbf097c40d1667c20888411325ec967e9
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Sun Apr 19 21:57:33 2015 +0200

    [over.over] Make index entry for overloaded function consistent with the one in [expr.unary.op].

commit a4b28063a1f9ed5f0e65fc1ff22fd76280cfd707
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Sun Apr 19 21:24:31 2015 +0200

    [gram, gram.key, lex.ppnumber] Use \indextext instead of \index.

commit e525c60ebaf2e54d19642614372cdc7ce768e606
Author: Eelis van der Weegen <eelis@eelis.net>
Date:   Sun Apr 19 12:12:43 2015 +0200

    [intro] Fix index entry that uses !see instead of |see.

commit d557517f82a30cb0aa991f99f12d09b75742551d
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Thu Nov 19 18:42:44 2015 +0000

    [locale.id] Add missing \tcode

commit 45201e86de1f68c2ddb84b1dc90d961e97a9195f
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Nov 19 13:34:06 2015 +0000

    [rand.adapt.general] apply ref fix from LWG 2181

commit 54a256349e104cbaffe7bc3f1e41b3dd75837444
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Nov 19 11:25:28 2015 +0000

    [headers] Add <shared_mutex> to Table 14.

    Also update total number of headers and add [diff.cpp11.library].

commit 3e355a55199d77949fa2010f867d6afa3764c7ba
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Nov 19 11:10:24 2015 +0000

    [time.point.cast] replaces braces with parentheses

    Fixes #562.

commit faf6ce008124ccaeaf8f77d31f3fb72bd2fcafdd
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Thu Nov 19 11:00:06 2015 +0000

    [memory.syn] add default argument to owner_less

    Also change class-key to 'struct' to match later definition.

commit 27d6d806169ed7b4b0c12c760c78879b8f95290c
Author: timsong-cpp <rs2740@gmail.com>
Date:   Fri Oct 23 02:49:09 2015 -0400

    [fstream.members] Fix "returns returns".

commit 4d69bcb2f0c8fea313fdc653c01e2f736525b976
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Nov 18 11:29:44 2015 +0000

    [allocator.requirements], [res.on.arguments] qualify std::move

commit a82e553e2be894227523f57692b6f44358f92cd9
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Nov 18 01:17:46 2015 +0000

    [utility] Make spelling of 'cv void' more consistent

commit 6ee833203b85e4d8f5c5d89b9ba47cf8689ff3fb
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Wed Nov 18 01:17:07 2015 +0000

    [class] Clarify 'cv-void class members'

commit 35267c4c08272f3c618c8e9106b811af09c2734d
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sun Nov 15 11:55:25 2015 +0000

    [sequences.general] Promote header synopses to rSec2

commit 20e643f0402d7b4900604343a2a8c3f36a26c2f8
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Sun Nov 15 11:32:17 2015 +0000

    [stack.syn] Move <stack> synopsis after <queue> synopsis

commit bcef6cb3c5321f88ec12d5a342c40bc2f56a7b8f
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Sat May 9 23:59:23 2015 -0500

    [dcl.init.ref] Replace normative note with actual note.

commit 837fc82bba927a1c3427c83fa99851a78570f345
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Nov 13 14:04:03 2015 -0800

    Turn off ligature formation in \texttt. In a couple of places, we were
    rendering << or >> as guillemets.

commit 4c21b190c7201486d70699261521fc6c78054f8e
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Nov 13 13:53:05 2015 -0800

    Use microtype package; this allows us to word wrap less often.

commit a764b26ebddd3571a78b7b117156ebe27d84245d
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Nov 13 11:55:28 2015 -0800

    [util.smartptr.ownerless] Italicize "unspecified".

commit 70c3b9f3a950022cd4531decbff8fbd29b4a208c
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Fri Nov 13 11:55:04 2015 -0800

    Remove unwanted spaces after /unspecified/ in library synopses.

commit 6e6edc1f620ab0e17102556cb65819c572ae655f
Author: Mitsuru Kariya <kariya_mitsuru@hotmail.com>
Date:   Thu Sep 17 12:33:48 2015 +0900

    Refine "Index of library names" for operator<< and operator>>

commit f4efabd91987982442d36e26e0003d752850d6a2
Author: Stephan Bergmann <sbergman@redhat.com>
Date:   Tue Jul 14 11:26:38 2015 +0200

    Local definition of "char-like type" from Clause 21 referenced in Clause 28

    ...so drop "In this Clause" from the definition in [strings.general] and add a
    reference to the first use in [re.general].

    See <https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/dGc1exSnPps>
    "Local definition of "char-like type" from Clause 21 referenced in Clause 28"
    for a discussion of this (presumably editorial) issue.

commit 5f62a33f50c8d3fd736d552d41b860189cdb5ba7
Author: Zhihao Yuan <lichray@gmail.com>
Date:   Thu May 7 16:05:37 2015 -0500

    No qualified std::fclose call

commit 2fe773b9dfe80f3ac5349e7040d352e9d9cf8b26
Author: Thomas Köppe <tkoeppe@google.com>
Date:   Tue Apr 14 17:06:15 2015 +0100

    [containers] Minor whitespace and ordering improvements

commit 4779c8ac3dcd91ee4387969f863a5f40b587c0fb
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Wed Apr 1 17:47:37 2015 +0100

    Update Table 121. Rename [fstreams]. Move [fstreams]/2.

commit 98ca118b5a91e81d63f4e782f1e4c657137c692c
Author: Jonathan Wakely <cxx@kayari.org>
Date:   Tue Sep 23 10:11:38 2014 +0100

    [file.streams] Change sub-clauses to rSec2, similar to [string.streams]

    Promote [c.files] to rSec1.

commit f41da80744bd5da13cc9dc19fc0d572889a78b63
Author: cpplearner <cpplearner@outlook.com>
Date:   Sun Oct 12 17:04:50 2014 +0800

    [diff.expr] replace "declare" with "define"

    It is always legal in C++ to declare new types in a sizeof expression or cast expression, but you can't *define* a new type in an expression.

commit 93838cd1d5a673efb313783971a94b73112d1b06
Author: Kazutoshi SATODA <k_satoda@f2.dion.ne.jp>
Date:   Sat Aug 2 17:18:46 2014 +0900

    Uniform notation of distance(first, last) to (last - first)

    As allowed in 25.1 [algorithms.general] p12, to express the same things
    as same.