Editor's Report — Library Fundamentals TS V1

# N4083, Editor's Report for Version 1 of the Library Fundamentals TS

2014-07-07

## Acknowledgements

Thank you to the editing committee, consisting of Alisdair Meredith, Daniel Krügler, and Marshall Clow, for their review of the PDTS.

Special thanks to Jonathan Wakely for applying edits corresponding to motions to the draft working paper, and Daniel Krügler for submitting many editorial issues.

Thanks to all those who have submitted editorial issues.

## New Papers

- N4081 is the current working draft. It replaces N4023.
- N4082 is the Library Fundamentals PDTS.
- N4083 is this Editor's Report.

## Notable Changes to Issues and Papers as Moved

### LWG Motion 2 / LWG 2389

LWG 2389 and Motion 4 / N4067 conflicted and were merged by applying `ALLOCATOR_OF` in matching places in [func.wrap.func.con] after N4067's move.

### LWG Motion 2 / LWG 2390

The table format proved hard to read, so 2653e2ff moved the comments column to independent paragraphs after the table.

### LWG Motion 3 / N4078

This paper uses a `void member() const&&;` format when both a const-qualifier and a ref-qualifier apply to a member function. I've changed this to `void member() const &&;` to match the example in [over.load] in the standard.

This paper missed the removal of [optional.defs] after it removed all uses of the definitions there. 40ff9451 removes this section.

I've also added table numbers and captions to the new tables.

### LWG Motion 4 / N4067

The proposed stable names followed a different pattern than the rest of the document, and were renamed back to the prevailing format.

### LWG Motion 4 / N4077

N4077 propagates a mistake in `shared_ptr::operator*()` introduced in the application of N3920. I've replaced the incorrect Notes: section with a Remarks:.

## Notable editorial changes

### Use type aliases and variable templates for type traits

Commit 043a78f7 replaces all uses of type traits with their equivalent aliases and variable templates.

### Feature testing macros have the date of their last change.

I updated the values of the feature testing macro to match the meeting at which the feature last changed. This may make it easier for people to track partial implementations of the TS.

### Definition of invocation parameters is less redundant

In rebasing N3866 onto the Fundamentals TS, I missed that I produced paragraphs saying "If X && Y then W. If X && Z then W." 0f08d278 merges the redundant paragraphs.

## All Changes

A log of all changes since N4023 is below and on Github.

    commit 2653e2ff9f6912029cb54bafb353db06f5a093be
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Mon Jun 16 23:18:14 2014 +0200

        Extract the definitions of the invocation traits into separate paragraphs.

        This lets us use bullets, etc. to structure the explanation, which is easier to
        read than stuffing the whole thing into a single table cell.

    commit 5aaf8ae3fad6fd5704b5556242ca27ce64e0479b
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jun 22 12:38:11 2014 +0200

        Apply LWG2371 from N4079.

    commit 92be114325257914b11ad94176036c6db6b5c064
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jun 22 12:41:58 2014 +0200

        Apply LWG2374 from N4079.

    commit 9458ef694db1af1964cf38c1265017f33980afbf
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jun 22 15:06:24 2014 +0200

        Apply LWG2390 from N4079.

    commit f06f897eb933d00236ca0fb776f6d150e7d18874
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jun 22 15:09:41 2014 +0200

        Apply LWG2395 from N4079: "Preconditions: is defined nowhere"

    commit 2937962ad1daff54a4fed13bf96ed97bf5b75a08
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jun 22 15:16:05 2014 +0200

        Apply LWG2409 from N4079: "SFINAE-friendly common_type/iterator_traits should be removed from the fundamental-ts"

    commit 7b47f9c82d38cef42a07933376f0319eceff9a21
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Mon Jun 23 15:17:19 2014 +0200

        Apply N4078: "Fixes for optional objects"

    commit b3b6b5b0559f4608ff0970be886c7400970ed185
    Author: Jonathan Wakely <github@kayari.org>
    Date:   Mon Jun 9 18:55:39 2014 +0100

        [any.synop] Rename parameter of move constructor

        All constructors taking an `any` name that argument `other`, except the move constructor in the synopsis (the move constructor definition says `other` too).

    commit 1cb62d5e1a30085cac8b97069114ecb15ee3619e
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Mon Jun 23 20:00:09 2014 +0200

        Fix some broken markup in optional.html.

    commit 6f9a67eef231a0fb7994ba010b78350742ebb757
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Mon Jun 23 23:14:04 2014 +0200

        Apply N4067: "Experimental std::function etc."

    commit 36612287f307c08c03bda31991773313365f0d89
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Tue Jun 24 13:53:17 2014 +0200

        Apply LWG2389 from N4079: "function::operator= is over-specified and handles allocators incorrectly"

        This applied cleanly to the new section created by N4067.

    commit 7bad4c1f1a7253ecd80ef88b235e42efbf6251ab
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Wed Jun 25 13:27:29 2014 +0200

        Update the list of headers to match the latest html-doc-framework list-table design.

    commit 94fefca1cb10ad9e1887b7bd1925c08dd35ff9b8
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Wed Jun 25 13:44:31 2014 +0200

        Update to html-doc-framework#master, and fix up a few over-long inline code blocks.

    commit b120c9f5edf09b31fc842a203257a6f564623d10
    Author: Jonathan Wakely <jwakely@redhat.com>
    Date:   Fri Jun 20 08:01:32 2014 +0100

        N4077 - experimental::shared_ptr changes.

        Remove [mods.util.smartptr.shared]
        Add [memory.smartptr]

    commit 043a78f7823880f469dd8a9092ba58433ced0ed5
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Wed Jun 25 18:10:50 2014 +0200

        Use the new template aliases and variable templates for type traits to remove ::type and ::value from the TS.

    commit b3e702f3b8f8f3be665ed40eb56a59242d44effc
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Wed Jun 25 10:35:17 2014 -0700

        Allow a few more line breaks in inline code.

    commit 610316b266a92d7035ef8267fe96ae7ef7296f52
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Wed Jun 25 10:36:52 2014 -0700

        Add a missed line break in optional::operator*.

    commit 3b6b1303cb1da34c99fb8a85136bc8e6fbdbee55
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jun 26 14:22:55 2014 -0700

        Fix up some references inside the shared_ptr change.

    commit 90b32931e8abe0e10b45e507e6e1e8f94b509179
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jun 26 14:25:25 2014 -0700

        Update the values of the invocation_type and optional feature-testing macros to reflect the last meeting they were changed.

    commit 0f08d278c973da1a4c37e4cedb1c86bde64cf899
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Fri Jun 27 08:56:33 2014 -0700

        Remove redundant conditions from the `invocation parameters` definition.

        I checked N3866, and the redundancy was there too.  It was there in order to
        fit into the INVOKE definition in [func.require], but since the Fundamentals TS
        isn't defining INVOKE, we don't need the extra bullets here.

    commit a286f56ed43acbaff62f40c99a181a768424b311
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jun 29 09:05:12 2014 -0700

        Add a missed section from N4067.

        Thanks to Daniel Krugler for noticing.

    commit 33cc1ab47a7a40b15902e162446a9559157bc48c
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jun 29 09:23:01 2014 -0700

        Update the document number for the post-Rapperswil mailing.

    commit 40ff94517f0dea3b42f891cfbc27079858bfb23a
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 11:08:49 2014 -0700

        Remove optional.defs because "engaged" and "disengaged" aren't used anymore.

    commit ffac0fc7e998c21f2f0d7a078e31ef2718cf1d57
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 12:34:28 2014 -0700

        Explicitly wrap the invocation_type declarations.

        <wbr> doesn't work on Firefox, and these don't look good on 1 line anyway.

    commit 38d44e601730ed8d83ee7613e101e1e5a2b555ec
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 12:36:28 2014 -0700

        Fix "the the" in optional.object.assign.

    commit 6a173c72963062326333530079bcbd25c7fa67d2
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 12:41:09 2014 -0700

        Remove a Requires attribute that I missed from N4078.

    commit 169eea2ecf22a66ce931e28fe0aa4b0f4fcffcd2
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 12:50:20 2014 -0700

        Capitalize all function attributes.

        One uncaptialized attribute was a member variable, so I wrapped it in <code> instead.

    commit d9df4c1cb082ce34ef9ac3ec53bf4106d3d18372
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 12:54:17 2014 -0700

        Remove extraneous parentheses and a "the expression" from optional.relops.

    commit 1983b86c524311ba0aa54899e8ef97583e902d32
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 12:54:50 2014 -0700

        Add "experimental/" to the shared_ptr_arrays feature-test macro as specified by N4077.

    commit 83beb1e176abad742c5de85e82704b6588975d34
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 13:13:42 2014 -0700

        Fix a <cxx-notes> that was specified as a <cxx-remarks> in N3920.

        I transcribed this part of the paper wrong in commit 302ca0b93d.

    commit 362af4baae6660a4292a7a4ef371d48a1c9d3433
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 17:00:46 2014 -0700

        Update the HTML framework to support the PDTS stage and add matching markup in the TS.

    commit 370d2f4e4b0598e9712ba6cfd31f0f0419f00272
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Thu Jul 3 22:11:31 2014 -0700

        Remove the reinterpret_pointer_cast(std::shared_ptr) overload.

        It wasn't included in N4077.

    commit ad206f1787c9786ac580e603a13e202d4589c34a
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Fri Jul 4 00:27:53 2014 -0700

        Fix up the rest of line breaking in Firefox and Prince.

    commit 90a119074c92714f1c90d59f1ca4b0fcc54d4f19
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sat Jul 5 15:42:18 2014 -0700

        Update the HTML framework, and save the current section index.

    commit d63c671f8ce45e605ff4e0ee5e0c4e686a3c9119
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sat Jul 5 16:01:34 2014 -0700

        Separate ref-qualifiers from 'const' with a space.

        This matches the one example in the standard and the weak weight of opinion on
        the editors' list.

    commit 84031c7e4da1797dff4faf0d0c76cafbbcb417ab
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sat Jul 5 20:06:57 2014 -0700

        Use rawgit.com for the rendered links

        Now that we have two branches of the TS, we can't easily use `gh-pages` anymore.

    commit 71599b4c689e090414a058cb416643a37d319b16
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 11:00:34 2014 -0700

        Rename mods.allocator.uses to allocator.uses.trait.

    commit 05b8ad087fe8b602d1e7ecca637d3d304b12a0ff
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 11:01:11 2014 -0700

        Use a real reference for BinaryTypeTrait.

    commit da29e15b4b8fe5d35b04f15533ab15e883dccfda
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 11:15:03 2014 -0700

        Section references are now against the C++14 DIS.

    commit 5f2655c80ed5103bb4ba55a22a940aa5182e38ba
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 11:36:42 2014 -0700

        Put a missed string_view table caption in code font.

    commit 550ef7a9dcf0b32c25a972d75d1194c2177bad12
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 13:05:50 2014 -0700

        Number and caption the new optional<> tables.

    commit 06b8e0e89d08db74427ef1cc1df497f52f774e7d
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 13:06:56 2014 -0700

        Use std::move() instead of move() in optional<>.

    commit 2b0f6193bbb9be002d7febc831b9c1d18880fb39
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 13:11:12 2014 -0700

        Insert "Then" at the beginning of [meta.trans.other] p6 b3.

    commit 9cbc31423020a2ff7fca98d920aa8f4a38d28340
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 13:13:23 2014 -0700

        It's <cxx-postconditions>, not <cxx-postcondition>.

        Filed cplusplus/html-doc-framework#12.

    commit b030b2235daef34b73a565eb5c158f071aa016b2
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 13:20:05 2014 -0700

        Change alg.search to "Equivalent to *return*".

    commit 362d6b71b0e7be8f6f8b88c558c2b198554b0c30
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 13:22:24 2014 -0700

        Update the doc framework and regenerate the index and standalone document.

    commit b178466490eb77ff8fb7c43f3dacd971817e2d0c
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Sun Jul 6 14:01:41 2014 -0700

        Revert "Rename mods.allocator.uses to allocator.uses.trait."

        This reverts commit 71599b4c689e090414a058cb416643a37d319b16.

    commit 6fdf23b4046e006ee8b07ab92aaa85b4be41108a
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Mon Jul 7 22:07:11 2014 -0700

        Fix the font size of <pre> blocks.

    commit 69d0bb154f311a8e9db2ddebb8b97c2c5799c761
    Author: Jeffrey Yasskin <jyasskin@gmail.com>
    Date:   Mon Jul 7 22:36:31 2014 -0700

        Add a missed </code>.