# N4792 Editors' Report -- Programming Languages -- C++ 2018-12-07 Richard Smith (editor) (Google Inc) Thomas Köppe (co-editor) (Google DeepMind) Jens Maurer (co-editor) Dawn Perchik (co-editor) (Bright Side Computing, LLC) `` ## Acknowledgements Special thanks to Casey Carter and Tim Song for supplying the LaTeX sources for [P0896R4](http://wg21.link/p0896r4) (LWG motion 25, 208 pages of wording changes) and [P1148R0](http://wg21.link/p1148r0) (LWG motion 12, 55 pages of wording changes), respectively, and to Tony Van Eerd for supplying a pull request for [P1085R2](http://wg21.link/p1085r2) (LWG motion 23). Thanks to all those who have [submitted editorial issues](https://github.com/cplusplus/draft/wiki/How-to-submit-an-editorial-issue) and to those who have provided pull requests with fixes. ## New papers * [N4791](http://wg21.link/n4791) is the current working draft for C++20. It replaces [N4778](http://wg21.link/n4778). * N4792 is this Editors' Report. Papers N4788 and N4789 (earlier versions of the post-San-Diego Working Draft and Editors' Report) are withdrawn and replaced by the above papers due to an administrative hiccup. ## Motions incorporated into working draft ### Core working group motions CWG motion 1: [Core issue resolutions](http://wg21.link/p1350r0) for 3 issues in "tentatively ready" status applied, resolving 4 issues: * [1636](http://wg21.link/cwg1636) Bits required for negative enumerator values **superseded by CWG Motion 10** * [1781](http://wg21.link/cwg1781) Converting from `nullptr_t` to `bool` in overload resolution * [2133](http://wg21.link/cwg2133) Converting `std::nullptr_t` to `bool` **resolved by resolution to CWG1781** * [2373](http://wg21.link/cwg2373) Incorrect handling of static member function templates in partial ordering CWG motion 2: [P0668R5 "Revising the C++ memory model"](http://wg21.link/p0668r5) CWG motion 3: [P0982R1 "Weaken release sequences"](http://wg21.link/p0982r1) CWG motion 4: [P1084R2 "Today's *return-type-requirement*s are insufficient"](http://wg21.link/p1084r2) **see below** CWG motion 5: [P1131R2 "*simple-template-id* is ambiguous between *class-name* and *type-name*"](http://wg21.link/p1131r2), resolving 1 core issue: * [2292](http://wg21.link/cwg2292) *simple-template-id* is ambiguous between *class-name* and *type-name* CWG motion 6: [P1289R1 "Access control in contract conditions"](http://wg21.link/p1289r1) CWG motion 7 was not approved CWG motion 8: [P1002R1 "`try`-`catch` blocks in `constexpr` functions"](http://wg21.link/p1002r1) CWG motion 9: [P1327R1 "Allowing `dynamic_cast`, polymorphic `typeid` in constant expressions"](http://wg21.link/p1327r1) CWG motion 10: [P1236R1 "Signed integers are two's complement"](http://wg21.link/p1236r1) (wording for [P0907R4](http://wg21.link/p0907r4)) CWG motion 11: [P0482R6 "`char8_t`: a type for UTF-8 characters and strings"](http://wg21.link/p0482r6) **see below** CWG motion 12: [P1353R0 "Missing feature test macros"](http://wg21.link/p1353r0) CWG motion 13: [P1073R3 "Immediate functions"](http://wg21.link/p1073r3) CWG motion 14: [P0595R2 "`std::is_constant_evaluated()`"](http://wg21.link/p0595r2) **see below** CWG motion 15: [P1141R2 "Yet another approach for constrained declarations"](http://wg21.link/p1141r2) **see below** CWG motion 16: [P1094R2 "Nested inline namespaces"](http://wg21.link/p1094r2) CWG motion 17: [P1330R0 "Changing the active member of a union inside `constexpr`"](http://wg21.link/p1330r0) Core motions added a total of 1 page to Clause 1-14. ### Library working group motions LWG motion 1 applies to the Concurrency TS LWG motions 2 and 3 apply to the Library Fundamentals TS LWG motion 4: [Library issue resolutions](http://wg21.link/p1224r0) for 9 issues in "Ready" status and 23 issues in "Tentatively Ready" status applied: * [2183](http://wg21.link/lwg2183) Muddled allocator requirements for `match_results` constructors * [2184](http://wg21.link/lwg2184) Muddled allocator requirements for `match_results` assignments * [2412](http://wg21.link/lwg2412) `promise::set_value()` and `promise::get_future()` should not race * [2682](http://wg21.link/lwg2682) `filesystem::copy()` won't create a symlink to a directory * [2936](http://wg21.link/lwg2936) Path comparison is defined in terms of the generic format * [2943](http://wg21.link/lwg2943) Problematic specification of the wide version of `basic_filebuf::open` * [2995](http://wg21.link/lwg2995) `basic_stringbuf` default constructor forbids it from using SSO capacity * [2996](http://wg21.link/lwg2996) Missing rvalue overloads for `shared_ptr` operations * [3008](http://wg21.link/lwg3008) `make_shared` (sub)object destruction semantics are not specified * [3025](http://wg21.link/lwg3025) Map-like container deduction guides should use `pair`, not `pair` * [3031](http://wg21.link/lwg3031) Algorithms and predicates with non-const reference arguments * [3037](http://wg21.link/lwg3037) `polymorphic_allocator` and incomplete types * [3038](http://wg21.link/lwg3038) `polymorphic_allocator::allocate` should not allow integer overflow to create vulnerabilities * [3054](http://wg21.link/lwg3054) `uninitialized_copy` appears to not be able to meet its exception-safety guarantee * [3065](http://wg21.link/lwg3065) [LWG 2989](http://wg21.link/lwg2989) missed that all `path`'s other operators should be hidden friends as well * [3096](http://wg21.link/lwg3096) `path::lexically_relative` is confused by trailing slashes * [3116](http://wg21.link/lwg3116) *OUTERMOST_ALLOC_TRAITS* needs `remove_reference_t` * [3122](http://wg21.link/lwg3122) `__cpp_lib_chrono_udls` was accidentally dropped * [3127](http://wg21.link/lwg3127) `basic_osyncstream::rdbuf` needs a `const_cast` * [3128](http://wg21.link/lwg3128) `strstream::rdbuf` needs a `const_cast` * [3129](http://wg21.link/lwg3129) `regex_token_iterator` constructor uses wrong pointer arithmetic * [3130](http://wg21.link/lwg3130) [input.output] needs many `addressof` * [3131](http://wg21.link/lwg3131) `addressof` all the things * [3132](http://wg21.link/lwg3132) Library needs to ban macros named `expects` or `ensures` * [3137](http://wg21.link/lwg3137) Header for `__cpp_lib_to_chars` * [3140](http://wg21.link/lwg3140) *COMMON_REF* is unimplementable as specified * [3145](http://wg21.link/lwg3145) `file_clock` breaks ABI for C++17 implementations * [3147](http://wg21.link/lwg3147) Definitions of `likely` and `unlikely` are likely to cause problems * [3148](http://wg21.link/lwg3148) `` should be freestanding * [3153](http://wg21.link/lwg3153) `Common` and `common_type` have too little in common * [3154](http://wg21.link/lwg3154) `Common` and `CommonReference` have a common defect * [3160](http://wg21.link/lwg3160) `atomic_ref() = delete;` should be deleted LWG motion 5: [P1123R0 "Editorial guidance for merging P0019R8 and P0528R3"](http://wg21.link/p1123r0) (see [P0019R8](http://wg21.link/p0019r8), [P0528R3](http://wg21.link/p0528r3)) LWG motion 6: [P0487R1 "Fixing `operator>>(basic_istream&, CharT*)`"](http://wg21.link/p0487r1), resolving 1 library issue: * [2499](http://wg21.link/lwg2499) `operator>>(basic_istream&, CharT*)` makes it hard to avoid buffer overflows LWG motion 7: [P0602R4 "`variant` and `optional` should propagate copy/move triviality"](http://wg21.link/p0602r4) LWG motion 8: [P0655R1 "`visit`: explicit return type for `visit`"](http://wg21.link/p0655r1) LWG motion 9: [P0972R0 "`` `zero()`, `min()`, and `max()` should be `noexcept`"](http://wg21.link/p0972r0) LWG motion 10: [P1006R1 "`constexpr` in `std::pointer_traits`"](http://wg21.link/p1006r1) LWG motion 11: [P1032R1 "Miscellaneous `constexpr` bits"](http://wg21.link/p1032r1) **see below** LWG motion 12: [P1148R0 "Cleaning up clause 20 (strings)"](http://wg21.link/p1148r0) LWG motion 13: [P0318R1 "`unwrap_ref_decay` and `unwrap_reference`"](http://wg21.link/p0318r1) **see below** LWG motion 14: [P0357R3 "`reference_wrapper` for incomplete types"](http://wg21.link/p0357r3) LWG motion 15: [P0608R3 "A sane `variant` converting constructor"](http://wg21.link/p0608r3) LWG motion 16: [P0771R1 "`std::function` move constructor should be `noexcept`"](http://wg21.link/p0771r1) LWG motion 17: [P1007R3 "`std::assume_aligned`"](http://wg21.link/p1007r3) LWG motion 18: [P1020R1 "Smart pointer creation with default initialization"](http://wg21.link/p1020r1) LWG motion 19: [P1285R0 "Improving completeness requirements for type traits"](http://wg21.link/p1285r0) LWG motion 20: [P1248R1 "Remove `CommonReference` requirement from `StrictWeakOrdering`"](http://wg21.link/p1248r1) LWG motion 21: [P0591R4 "Utility functions to implement uses-allocator construction"](http://wg21.link/p0591r4) LWG motion 22: [P0899R1 "LWG 3016 is not a defect"](http://wg21.link/p0899r1) (see [LWG 3016](http://wg21.link/lwg3016)) LWG motion 23: [P1085R2 "Should `span` be regular?"](http://wg21.link/p1085r2) LWG motion 24: [P1165R1 "Make stateful allocator propagation more consistent for `operator+(basic_string)`"](http://wg21.link/p1165r1) LWG motion 25: [P0896R4 "The One Ranges proposal"](http://wg21.link/p0896r4) **see below** LWG motion 26: [P0356R5 "Simplified partial function application"](http://wg21.link/p0356r5) **see below** LWG motion 27: [P0919R3 "Heterogeneous lookup for unordered containers"](http://wg21.link/p0919r3) LWG motion 28: [P1209R0 "Adopt consistent container erasure from Library Fundamentals 2"](http://wg21.link/p1209r0) Library motions added a total of 133 pages (and 1 Clause) to Clause 15-31. ## Notable editorial changes ### CWG motion 11 and CWG motion 10 Rebased `char8_t` wording on the revised description of fundamental types introduced by CWG motion 10. The description of `unsigned char` as the underlying type of `char8_t` now renders unnecessary some of the other wording in CWG motion 11; such wording has consequently not been applied. ### CWG motion 14 After consulting with CWG, added the missing definition for "usable in constant expressions" as applied to objects and references. ### CWG motion 15 Removed now-unused grammar production *default-template-argument*. ### CWG motion 15 and CWG motion 4 CWG motion 4 adds new uses of the grammar production *qualified-concept-name* that CWG motion 15 removes. These have been updated to instead refer to the new production *type-constraint*, and the normative wording of CWG motion 4 has been rewritten to use the new term "immediately-declared constraint", both of which were introduced by CWG motion 15. ### LWG motion 11 Change 10 included an editing instruction to make matching changes elsewhere in the draft. There does not appear to be any "elsewhere" to make said changes. This editing instruction was ignored. ### LWG motion 13 and LWG motion 26 The specification of `bind_front` was simplified by replacing *DECAY_UNWRAP* a use of the new `unwrap_ref_decay_t` alias template introduced by LWG motion 13. ### LWG motion 25 The wording paper contained an unmarked modification of [std.iterator.tags], replacing "the most specific category tag" with "a category tag". After consulting with the paper authors, the change was intentional, and the corresponding edit has been applied despite not being marked up. ### LWG motion 25 and CWG motion 4 CWG motion 4 removes a grammar production from *requires-clause*s, but LWG motion 25 adds new uses of said grammar production. Those uses are all of the form ``` requires { { expr } -> Same&; } ``` After consultation with LWG, these uses have been rewritten as ``` requires { { expr } -> Same; } ``` which is believed to both correctly reflect the intent and not change the meaning in practice of any of the uses introduced by LWG motion 25. Additionally, CWG motion 4 contains an instruction to replace all constructs of the form ``` requires { E; requires Concept; } ``` with the simpler (but now equivalent) ``` requires { { E } -> Concept; } ``` throughout [concepts]. However, LWG motion 25 adds many more instances of the former pattern throughout several other clauses. All such instances throughout the working draft have been replaced. ### LWG motion 26 A feature test macro name `__cpp_lib_bind_front` was recommended by the paper, but no wording changes were included to add said feature test macro to the working draft's table of feature test macros. The macro has been added to the table anyway. ### Section label changes Several section labels introduced by the motions papers have been modified to match our style guide. In addition to the section labels affected by the above motions, the following changes have been made: [string.op+=] has been renamed to [string.op.append]. [string.op+] has been renamed to [string.op.plus]. [re.regex.nmswap] was the only subclause in its parent [re.regex.nonmemb]. The former heading has been removed, leaving the old content directly in [re.regex.nonmemb]. [istream::sentry], [ostream::sentry], [ios::failure], [ios::fmtflatgs], [ios::iostate], [ios::openmode], [ios::seekdir], and [ios::Init] have been renamed, replacing the "::" with a "." and converting "Init" to lowercase. See the appendix "Cross-references from ISO C++ 2017" in the working draft for a full list of sectoin label changes since C++17. ## Minor editorial fixes A log of editorial fixes made to the working draft since N4778 is below. This list excludes changes that do not affect the body text or only affect whitespace or typeface. For a complete list including such changes (or for the actual deltas applied by these changes), consult the [draft sources on github](https://github.com/cplusplus/draft/compare/n4778...n4791). commit e00fef979f7c0da235351f898010658f1f074b87 Author: Johel Ernesto Guerrero Peña Date: Thu Dec 6 21:48:24 2018 -0400 [iterator.synopsis] Add reference to [alg.req.sortable] commit 9d81b4fde6dfe2b28737a79ed39f92ef9a0ee030 Author: Eelis van der Weegen Date: Sun Dec 2 06:07:03 2018 +0100 [view.interface] Use "inherits"/"derives" consistently. commit 358fcdc442fd620f00673081223e4313cf0af499 Author: Jens Maurer Date: Tue Nov 27 20:38:28 2018 +0100 [cpp.subst] Introduce grammar non-terminal 'va-opt-replacement' to avoid repeated quotes of the token sequence. commit 4425a120b9a60d3c9e6aa3f1feb553082a9f1fbd Author: Jens Maurer Date: Fri Dec 7 21:37:02 2018 +0100 [iterator.concepts.readable] Turn parenthesized explanation into a note. commit de1093907b6deb7455b866d5c47a6a1a026a90a1 Author: Jens Maurer Date: Fri Dec 7 22:27:20 2018 +0100 [temp.func.order] Adjust example to rules in [temp.deduct.partial]. commit 07901a9f724b019c0b6634a9a0c39e5dd5208324 Author: Jens Maurer Date: Sat Dec 1 17:31:53 2018 +0100 [input.output] Avoid colons in stable labels commit 6e5dba392d19241efed299c91670cc31fcbe3826 Author: Thomas Köppe Date: Fri Dec 7 22:05:50 2018 +0000 [template.mask.array.overview] Fix nesting of parentheses; reflow source commit 36998eae97c6876c1f67dc0425c42555dbf0cea5 Author: Thomas Köppe Date: Fri Dec 7 22:02:49 2018 +0000 [iterator.concept.iterator] Remove stray, mismatched parenthesis commit a5603f0cf1b35097a9892d9627eb03dc5cc3e154 Author: JF Bastien Date: Fri Dec 7 13:48:16 2018 -0800 [basic.fundamental] Remove a footnote that was describing a particular possible manifestation of undefined behaviour The note was problematic, as (by omission) it suggested that such behaviour might not be true for other types. commit 8035cdb6de85ff0f541b3fc78f747d060ea50ef6 Author: Johel Ernesto Guerrero Peña Date: Fri Dec 7 17:43:10 2018 -0400 [iterator.traits] Present concept requirements consistently (#2566) commit a4366dc5bf59d826a9b1aee82d317636a6239e9a Author: Jens Maurer Date: Fri Dec 7 21:51:55 2018 +0100 [iosfwd.syn] Change char_traits from 'class' to 'struct'. (#2570) commit 888da0bf8d0a07048dab8098197c7a326eda9e19 Author: Thomas Köppe Date: Wed Dec 5 01:46:53 2018 +0000 [algorithms] Add missing closing delimiters commit 14db6ec65b7c3dbd9da2e112e09015bdcba3501f Author: Eelis Date: Tue Dec 4 23:01:27 2018 +0100 [atomics.types.operations]/20 Replace "E.g." at start of sentence with "For example,". (#2558) commit aadf7684f1e6c2fe1fa15ffa0cf2ee45b5e56cd7 Author: Eelis Date: Mon Dec 3 22:54:57 2018 +0100 [re.grammar] Add missing closing parentheses. (#2552) commit 4fc0a426f700c03aeea5b5efe040af9f3c977df8 Author: Jens Maurer Date: Sat Dec 1 14:32:10 2018 +0100 [utilities] Harmonize 'For T in Types' phrasing. (#2543) No '...' for a pack expansion should appear after 'Types', and no index on 'T'. commit 334e9f546dcb786801b9bef428f7c0fb94bee79b Author: Jens Maurer Date: Sat Dec 1 03:34:10 2018 +0100 [dcl.init] Clarify standard conversions for built-in types (#2534) commit e6cd48f407698d882a08f2bc5e3aad8ea13b495e Author: Jens Maurer Date: Sat Dec 1 03:32:38 2018 +0100 [over.best.ics] Clarify ambiguous conversion sequence (#2532) commit 89f5b1dfbabf0b5755f4e516a3be9b1e2b78ffc2 Author: Jens Maurer Date: Tue Nov 27 22:01:21 2018 +0100 [over.ics.ref] Use 'implicit conversion sequence', not 'standard conversion sequence' where applicable. commit af1191e9f5a0ab93214849fbfed77f75b2da673b Author: Jens Maurer Date: Tue Nov 27 22:48:48 2018 +0100 [class.bit] Bit-fields of sufficient width can store any value of an enumeration, not just values of enumerators. commit 5ef7f9cbb248402f6c74f01acba87292efb0b561 Author: Jens Maurer Date: Tue Nov 27 22:19:14 2018 +0100 [dcl.init.aggr] Resolve grammar confusion around arrays of unknown bound commit 197db8c1fd3e57bc5c622a5e0ea9ac3f0c974e85 Author: Jens Maurer Date: Wed Nov 28 08:04:34 2018 +0100 [dcl.inline,dcl.align] Strike redundant 'definition' in phrases reading 'declaration or definition', because a definition is also a declaration. commit ad6385ac9730786006205d6fdca92e1d45aea13a Author: Jens Maurer Date: Tue Nov 27 23:16:26 2018 +0100 [dcl.spec] Harmonize phrasing of restrictions on decl-specifiers commit f38c14be051d91bc6492d774d45a325154b7f307 Author: Eelis Date: Tue Nov 27 23:28:09 2018 +0100 [depr.locale.category] Don't parenthesize reference after 'in'. (#2526) commit 3ba8b56c0ffa84cf8fe7bf78234fb8694d4d1498 Author: Richard Smith Date: Tue Nov 27 12:10:20 2018 -0800 [atomics.types.generic] Remove note that tries to encourage implementations to use the same size for atomic as for T. It's not appropriate for a note to contain "should" or implementation encouragement of this kind. It's also bad advice. commit e23cbb5b79397dd07c4c7adbea35b90075c78268 Author: Sergey Zubkov Date: Tue Nov 27 03:11:37 2018 -0500 [allocator.uses.construction] the argument name is alloc, not allocator commit 41a8baa9f739154f2b8c3f6b9e8339ede031195b Author: Richard Smith Date: Mon Nov 26 19:21:14 2018 -0800 [unord.req] Undo change accidentally made in wrong table cell. The intended table cell was already correctly updated. commit 9a720cd36a749057061b245772fb243678876b13 Author: Jens Maurer Date: Thu Oct 11 20:53:10 2018 +0200 [dcl.enum] Merge duplicate normative paragraphs on redeclarations. Also introduce the grammar non-terminal enum-head-name to simplify the description. commit 5e37f798131c38a4c609af2b8c70ce0b7a6f102f Author: Jens Maurer Date: Mon Apr 2 21:50:03 2018 +0200 [stmt.while] Simplify rewrite rule. commit 84d93372e79b218701611ae8599cf885fcaf13b1 Author: Jens Maurer Date: Mon Nov 26 12:45:01 2018 +0100 [string.classes] Avoid special characters in stable labels and rename [string.comparison] to [string.cmp] per convention commit 05f51e0963f8f7e9186062d97306df128ee1fdcc Author: Casey Carter Date: Mon Nov 26 13:06:53 2018 -0800 [iterator.operations] Simplify distance requirements; change to expects commit 90bb6f50af1d0181a158552399739cdeaf0b6ad7 Author: Casey Carter Date: Wed Oct 17 14:09:22 2018 -0700 [iterator.operations] Simplify advance requirements; change to expects commit 12589ca08e44ad3c6c215998ccdd92af3c02ca3b Author: Casey Carter Date: Wed Oct 17 14:08:27 2018 -0700 [iterator.operations] advance does not decrement by a negative count commit 5f757d356d241d4fa6313f7375a275a59958358d Author: Jens Maurer Date: Thu Oct 18 20:20:05 2018 +0200 [dcl.init.aggr] Add example for anonymous union initialized by a designated-initializer-list. commit b7aa3fe5f4e774edd8fe6239e707e0e0b1b44b41 Author: Jens Maurer Date: Thu Nov 1 10:44:12 2018 +0100 [numeric.ops] Move [numerics.defns] to the point-of-use. commit 63d15762f452fcb4787b2ca7896d9bbfde7de3ad Author: Jens Maurer Date: Mon Nov 26 12:36:20 2018 +0100 [alg.find.end] and [alg.search] should not use "subsequence" commit 0f16b26b5a06b8a3cd0596ead96c54146d7e3178 Author: Casey Carter Date: Wed Nov 7 14:16:30 2018 -0800 [over.ics.user] Mark "user-defined conversion sequence" as a term of art commit 7e32ffd6c031771bb3a7568eb40ebe3d6b3417aa Author: Jens Maurer Date: Thu Nov 15 19:42:52 2018 +0100 [over.best.ics] Turn 'such as' list into a note commit 915c784c12ec4570974a67e98d0086e1933d0733 Author: Jens Maurer Date: Mon Nov 26 23:42:17 2018 +0100 [iterators] Shorten labels for iterator concepts commit 3768294e5bac0fac1b40aee14c8615f6c3d2f08c Author: Jens Maurer Date: Mon Nov 26 23:35:13 2018 +0100 [iterators] Shorten stable labels for algorithm requirements commit fc0c0db579234fba09f87ee3fa7053f699066c2f Author: Jens Maurer Date: Mon Nov 26 11:59:42 2018 +0100 [ranges] Shorten and adjust stable labels commit fb5d52d59d6823d0e03b2e7ca85d76f43402efa8 Author: Jens Maurer Date: Mon Nov 26 13:22:09 2018 +0100 [structure.summary] Add missing templated entities commit 944a64419594b455759168e089c5cd075ea848be Author: Jens Maurer Date: Mon Nov 26 13:33:33 2018 +0100 [func.bind_front] Use unwrap_ref_decay_t commit 12c55fcdff724855444d3e3ddfcc24ad93d9dd6a Author: Jens Maurer Date: Mon Nov 26 13:54:46 2018 +0100 [dcl.attr.contract.check] Remove redundant statement that violation handler is implementation-defined commit ae11d65ac5df8a7e605f07bc1d36ed584002fd15 Author: Jens Maurer Date: Mon Nov 26 14:01:32 2018 +0100 [expr] Fix cross-references for 'composite pointer type' to refer to [expr.type], not [expr.prop]. commit 42f956e7e80a4dfd81608b366e4f7813332d7dc0 Author: Jens Maurer Date: Mon Nov 26 18:31:42 2018 +0100 [temp] Use 'deduced as' instead of 'deduced to' in comments explaining examples commit 602a81d2d88ec98fef3d4feeaf5b24079e1e2110 Author: S. B. Tam Date: Fri Oct 12 17:35:23 2018 +0800 [class.mem] Add opaque-enum-declaration to member-declaration commit 8ddcba4252b4a45194b8fdf4ebd2a439cb5e5147 Author: Kazutoshi SATODA Date: Tue Oct 30 08:58:23 2018 +0900 [conv.lval] Improve a bit more the note about std::nullptr_t case - "read the object" -> "access the object" The "read" was derived from the rule at [intro.execution], but it didn't fit well here. - "the object" -> "the object to which the glvalue refers" Make it clear what "the object" refers to. https://github.com/cplusplus/draft/pull/2372#pullrequestreview-169248002 commit 0b35a4688d09a385488f0d23c296afa622d7b02e Author: Kazutoshi SATODA Date: Thu Oct 25 02:59:31 2018 +0900 [conv.lval] Improve the note about std::nullptr_t case The meaning of "fetched from memory" is vague, and the two uses of term "access" [defns.access] are inappropreate here because - it causes undefined behavior to access an inactive member of a union, based on the rule of out-of-lifetime object [basic.life]: > The program has undefined behavior if: > - the glvalue is used to access the object, or - it implies reading the referenced object of std::nullptr_t, which is defined to be a side effect for volatile-qualified case. [intro.execution] > Reading an object designated by a volatile glvalue, ... are all > side effects, ... commit a694c9131618fd71b65faa8022cd6210dfa760f7 Author: Eelis van der Weegen Date: Sun Nov 11 21:31:03 2018 +0100 [expr.static.cast] Say 'lvalue denoting ...' instead of 'lvalue to ...' commit 2e054057e5a0db3e5563dd05286b04b55c3a3b87 Author: Jens Maurer Date: Wed Nov 21 12:02:41 2018 +0100 [basic.stc.dynamic.allocation] Fix cross-reference for get_new_handler commit d4439240b74cf044bc7626ed364eeba291ca79dd Author: Jens Maurer Date: Tue Oct 9 21:06:30 2018 +0200 [basic.type.qualifier] Clarify the definitions of const/volatile object commit d348800a5b0c2e594cf5e0b6e22404d52731e263 Author: Jens Maurer Date: Thu Oct 11 09:47:10 2018 +0200 [dcl.spec.auto] Return type deduction should refer to templated entity commit 2aa12aea978a0a79b725ce7552a1803c282a1c93 Author: Géry Ogam Date: Mon Nov 26 10:28:28 2018 +0100 [basic.lval] Correct an article in the prvalue definition An operator can have multiple operands. commit e63542071ba4acee0adb82bd1221fdb0158a4eef Author: Casey Carter Date: Sat Nov 17 16:29:38 2018 -0800 [cmp.categories,time.cal] Change "explicit constexpr" to "constexpr explicit" Per discussion in #2371. commit e6bbbbf62cddcbc6cea43a7589cfbcc48817b74b Author: Richard Smith Date: Mon Nov 26 00:27:52 2018 -0800 [unord.req] Clarify what r1 is and remove unnecessary variable e. commit 38f9dccc5abe1d53e28249bd09be79a25d9b2427 Author: Dawn Perchik Date: Fri Nov 16 02:27:56 2018 -0800 [unord.req] Use bullets for the list of denoting variables. commit e6b8936788decfb6c29ea527f1195ec3679a1195 Author: Richard Smith Date: Mon Nov 26 00:17:04 2018 -0800 [func.def] Simplify "references to functions and references to objects" to simply "references". commit dafbb9445f11ad231abbf72028c29b6dd77c9334 Author: Jens Maurer Date: Mon Nov 19 09:44:01 2018 +0100 [func.not_fn,func.bind_front] Some clarifications 'a target object' -> 'the target object' render 'initializer' as a grammar term and add a cross-reference to dcl.init add cross-references to expr.call commit 40fc57e9efdf5159a981cd87c9d8d765fd3f29ae Author: Richard Smith Date: Sun Nov 25 23:11:27 2018 -0800 [iterators] Remove bogus "shall"s is "Expects" elements. commit 9110f52c0e9550472b55845ba1c063333a94ad17 Author: Richard Smith Date: Sun Nov 25 21:46:09 2018 -0800 [range] [iterators] Replace uses of { I } -> Same& requirement. This form of requirement was made ill-formed by P1084R2. In its place, use { I } -> Same, after discussion on the lib reflector. commit 00da6c53f744a1781a1ce23cd3026af9d87f1f8a Author: Richard Smith Date: Sun Nov 25 21:42:11 2018 -0800 [incrementable.traits] [readable.traits] Remove redundant remove_const_t on type that cannot be const-qualified. commit e57b65067a5c73e20f2287b0ca0782d5d7d0333a Author: Richard Smith Date: Fri Nov 23 22:20:47 2018 -0800 [std.iterator.tags] Replace "the most specific category tag" with "a category tag". The new text was present in the Ranges wording, but with no insertion / deletion markup to indicate that an edit was to be performed. However, consultation with LWG revealed that this was an intentional edit missing markup. commit 92326665186c9c4e29f058f5b8d0ae5ea9814465 Author: Jens Maurer Date: Sat Nov 17 15:29:01 2018 +0100 [pairs.spec,tuple.creation] Simplify description by inlining unwrap_ref_decay_t into its point of use. commit d9521a91ab07548e888bd5be386822c0148a111f Author: Richard Smith Date: Sun Nov 25 18:44:37 2018 -0800 [iostream.forward.overview] Convert incomplete wording with no normative effect to an example. commit 6260a047c0f3120a0570e6418f201294e6442664 Author: Dawn Perchik Date: Thu Nov 22 23:58:55 2018 -0800 [diff.cpp17.input.output] Add ill-formed comment and a still well-formed use. commit a0a637a0b2797b2809982836c9330052a8465172 Author: Richard Smith Date: Sun Nov 25 01:29:58 2018 -0800 [expr.prim.req.compound] Replace note that restates what 'immediately-declared constraint' means with an example. commit 27797625e16a95b8946a353b09a86544c411ce61 Author: Richard Smith Date: Sun Nov 25 01:08:30 2018 -0800 [temp.param] Remove unused grammar production default-template-argument. commit 9b525539f0c7bf734be8e01db082fca775dbd028 Author: Richard Smith Date: Sun Nov 25 00:52:55 2018 -0800 [dcl.type.simple] Factor out decltype(e) wording into its own subclause. commit 4cc61d46edce136f5dfaeeee671ea58039b032e2 Author: Richard Smith Date: Fri Nov 23 19:55:37 2018 -0800 [expr.prim.req.compound] Resolve conflict between P1084R2 and P1141R2. Replace /qualified-concept-name/ with /type-constraint/ in grammar for /return-type-requirement/, and rewrite the new bullet for /return-type-requirement/ added in P1084R2 to use the term immediately-declared constraint introduced in P1141R2. commit d4d65994bcf692c472cee2ed83db34e4c94266e6 Author: Richard Smith Date: Sat Nov 24 23:40:25 2018 -0800 [expr.const] Remove redundant bullet from definition of manifestly constant-evaluated. Constexpr variables are always usable in constant expressions. commit e201f3325d8a91319c37a702e50d8032759fd822 Author: Richard Smith Date: Sat Nov 24 23:37:02 2018 -0800 [expr.const] Factor out some commonality from 'manifestly constant-evaluated' and 'potentially constant evaluated'. commit e58439bce8af85e6569328272c2cfb73f5fc44d6 Author: Richard Smith Date: Sat Nov 24 23:13:58 2018 -0800 [expr.const] Add missing definition of 'usable in constant expressions' for (sub)objects and reference members. commit b4eec9d65bcd54430c02ac7e66c88e63360801e6 Author: Jens Maurer Date: Wed Nov 14 23:45:01 2018 +0100 [c.mb.wcs] The parameter is called 's', not 'buf' commit f892418bf423d6495beaf75093db3dd97aff2d14 Author: Richard Smith Date: Fri Nov 23 21:26:05 2018 -0800 [gram] Remove now-incorrect claim that a typedef-name naming a class is a class-name. commit 8b70fdad014640772691057ada5b528bc8724b12 Author: Jens Maurer Date: Mon Nov 12 03:10:20 2018 +0100 [expr,class,temp] Remove vestigious references to pseudo-destructor-name and the removed section [expr.pseudo]. Add xrefdelta entry for removed section. commit fb22bbd60aba1f3aaf9288ab08a7feeb8e4c0101 Author: Richard Smith Date: Fri Nov 23 19:51:28 2018 -0800 [expr.prim.req.compound] Change "is" to "has a" when refering to grammar terms. commit 9bcfe7de3dd5bd4ad429011e169fca583bfa30b0 Author: Eelis Date: Tue Nov 20 23:16:11 2018 +0100 [dcl.fct] Add missing period after last sentence in example. (#2494) commit 12935b8549c0412f528b33b7795a19cda7ae8dd6 Author: Arthur O'Dwyer Date: Tue Nov 6 02:03:15 2018 -0500 [class.copy.assign] Use Oxford comma. Also convert some text font spaces into tcode spaces. commit 9437d29c92b8c2e4e779acaa2677e2cbb8800414 Author: Jens Maurer Date: Tue Nov 6 03:37:18 2018 +0100 [thread] Remove class name repeated in subheadings (#2368) commit 8ae6a8fbd5e0b19e0c2fad3598c3693b72081606 Author: Jens Maurer Date: Tue Nov 6 03:36:58 2018 +0100 [input.output] Remove class name repeated in subheadings (#2366) commit 96028f0000bbe2709bcdefe0fe3edc24862529a7 Author: Casey Carter Date: Wed Oct 31 04:21:52 2018 -0700 [iterator.requirements.general] Operations satisfy requirements, not operations (#2375) Drive-by: change "satisfy .... requirements" to "meet ... requirements". commit a43c2b30d71827325d8fdfbbd1488c570993adb7 Author: Jens Maurer Date: Fri Oct 19 15:17:52 2018 +0200 [localization] Remove class name repeated in subheadings (#2364) commit 9405969f396d371284945904b534bd3f3e029d47 Author: Jens Maurer Date: Thu Oct 18 20:39:54 2018 +0200 [numerics] Remove class name repeated in subheadings (#2362) commit 4afc80a9ab5b78cb3c1fe70495e162d40f427116 Author: Casey Carter Date: Wed Oct 17 02:19:26 2018 -0700 [output.iterators] Remove misleading italics from note (#2360) Since LWG asked me to remove these from P0896's OutputIterator, they probably don't belong in Cpp17OutputIterator either. commit 853f6bfc029f4d290c8a31da14f4282ee298cdc5 Author: Jens Maurer Date: Mon Oct 15 16:10:00 2018 +0200 [iterators] Remove class name repeated in subheadings (#2358) commit 3a6d922f5ef5c3c77cfe74e39563879698716768 Author: Jens Maurer Date: Sat Oct 13 15:07:28 2018 +0200 [re] Remove class name repeated in subheadings (#2356) commit d0bb9916b779f6b113294ce9387063cad2f4b465 Author: Jens Maurer Date: Sat Oct 13 10:45:05 2018 +0200 [utilities] Remove class name repeated in subheadings (#2355) commit 506ec70eab720e757555be0059c5371ff4117fba Author: Jens Maurer Date: Wed Oct 10 23:35:18 2018 +0200 [class.this] Turn redundant statement on cv-qualified constructors/destructors into a note. commit 7c0e7fd6396d5509027c390d9557f9642d30db42 Author: Jonathan Wakely Date: Wed Oct 10 15:06:10 2018 +0100 [cpp.cond] Fix "carries_depencency" typo in table commit e8fee95850cc5a68ea09fb29f4e50c28632ed348 Author: Jens Maurer Date: Tue Oct 9 23:24:28 2018 +0200 [basic.types] Clarify that 'value representation' does not depend on the value. (#2246)