2018-07-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)
<cxxeditor@gmail.com>
Special thanks to Casey Carter for supplying a pull request to merge P0898R3 (LWG motion 28), and working with us on editorial cleanups within the 12 pages of added text.
Thanks to all those who have submitted editorial issues and to those who have provided pull requests with fixes.
CWG motion 1: Core issue resolutions for 6 issues in "ready" status applied:
auto
static data membersCWG motion 2: Core issue resolutions for 6 issues in "tentatively ready" status applied:
void{}
CWG motion 3: P0806R2 "Deprecate implicit capture of this
via [=]
"
CWG motion 4: P1042R1 "__VA_OPT__
wording clarifications"
CWG motion 5: P0929R2 "Checking for abstract class types" applied, resolving 2 core issues:
CWG motion 6: P0732R2 "Class types in non-type template parameters"
CWG motion 7 was not approved
CWG motion 8: P1025R1 "Update the reference to the Unicode standard"
CWG motion 9: P0528R3 "The curious case of padding bits, featuring atomic compare-and-exchange"
CWG motion 10: P0722R3 "Efficient sized delete for variable sized classes"
CWG motion 11: P1064R0 "Allowing virtual function calls in constant expressions"
CWG motion 12: P1008R1 "Prohibit aggregates with user-declared constructors"
CWG motion 13: P1120R0 "Consistency improvements for <=>
and other comparison operators"
CWG motion 14: P0542R5 "Contract-based programming" see below
CWG motion 15: P0941R2 "Feature-test macros" see below
CWG motion 16: P0892R2 "explicit(bool)
"
LWG motions 1-5 apply to the Parallelism TS
LWG motions 6 and 7 apply to the Reflection TS
LWG motions 8 and 9 apply to the Coroutines TS
LWG motion 10 applies to the Networking TS
LWG motion 11: Library issue resolutions for 14 issues in "Ready" and "Tentatively Ready" status applied:
std::visit
misspecifiedadjacent_difference
shouldn't require creating temporariesdecay_t
in is_execution_policy_v
should be remove_cvref_t
recursive_directory_iterator::pop
must invalidatevalarray
should only deduce from the valarray
basic_string
CTAD ambiguityexisting_p
overloads of create_directory
from_chars
pattern specification breaks round-trippingios::iword(-1)
do?span
iterator
and const_iterator
behaviorduration
divisionread_until
still refers to
"input sequence") from P1082R0 was not part of this motion, as it applies to
the Networking TS.LWG motion 12: Library issue resolution for 1 issue applied:
LWG motion 13: P0476R2 "Bit-casting object representations"
LWG motion 14: P0788R3 "Standard library specification in a concepts and contracts world"
LWG motion 15 was not approved
LWG motion 16: P0458R2 "Checking for existence of an element in associative containers"
LWG motion 17: P0759R1 "fpos
requirements"
LWG motion 18: P1023R0 "constexpr
comparison operators for std::array
"
LWG motion 19: P0769R2 "Add shift
to <algorithm>
"
LWG motion 20: P0887R1 "The identity
metafunction"
LWG motion 21: P0879R0 "constexpr
for swap
and swap
-related functions" applied, resolving 1 issue:
constexpr
swap
LWG motion 22: P0758R1 "Implicit conversion traits and utility functions"
LWG motion 23: P0556R3 "Integral power-of-2 operations"
LWG motion 24: P0019R8 "atomic_ref
"
LWG motion 25: P0935R0 "Eradicating unnecessarily explicit default constructors from the standard library"
LWG motion 26: P0646R1 "Improving the return value of erase
-like algorithms"
LWG motion 27: P0619R4 "Reviewing deprecated facilities of C++17 for C++20" see below
LWG motion 28: P0898R3 "Standard library concepts" see below
Subclause structure and paragraph order of [dcl.attr.contracts] was reworked. Several normatively-redundant statements were converted to notes or removed.
Multiple papers moved at this meeting included suggested feature-test macros.
However, these were not presented as editing instructions, because we did not
have feature-test macros in the standard wording yet. After consultation with
CWG and LWG, the following feature test macros have been added in addition to
those listed in CWG motion 15 (all with value 201806L
):
__has_cpp_attribute(assert)
__has_cpp_attribute(ensures)
__has_cpp_attribute(expects)
__cpp_explicit_bool
__cpp_nontype_template_parameter_class
__cpp_lib_atomic_ref
__cpp_lib_bit_cast
__cpp_lib_concepts
__cpp_lib_constexpr_swap_algorithms
__cpp_lib_list_remove_return_type
CWG motion 16 would have us change wording that was deleted by CWG motion 12.
The requested change in CWG motion 16 (from teletype "explicit
" to body font "explicit")
was ignored.
The underlying text has changed between the drafting of the resolution to this issue and its application. We believe every requested edit has been applied; however, an additional use of "user-defined type" has been added to [namespace.std] that should likely also have been covered by this wording. It has not been changed.
These motions both introduce a <bit>
header, but the organizational structure
suggested by motion 23 doesn't make sense for the functionality
added by motion 13.
The wording of motion 23 has been rearranged to fit into
the structure established by motion 13.
Added the new contains
member function for associative containers to the list
of member function templates that do not participate in overload resolution
unless the comparator is transparent, after consultation with LWG.
LWG motion 19 adds a shift_right
algorithm to <algorithm>
as a non-constexpr
function template.
LWG motion 21 instructs that we mark
all non-parallel algorithms in <algorithm>
as constexpr
.
Naturally, however,
its proposed wording change does not list the shift_right
algorithm.
After consultation with LWG, shift_right
has been marked constexpr
to satisfy the intent of LWG motion 21.
Synopses for
<ccomplex>
,
<cstdalign>
,
<cstdbool>
, and
<ctgmath>
were not removed;
instead, they have been repurposed as synopses for
<complex.h>
,
<stdalign.h>
,
<stdbool.h>
, and
<tgmath.h>
.
(The latter used to be defined in terms of the former,
but can no longer be specified in that way.)
Also introduced a synopsis for <iso646.h>
.
Clause labels shortened and simplified throughout.
The single-item clauses [concept.movable], [concept.copyable], [concept.semiregular], and [concept.regular] have been merged into their parent, [concepts.object].
The single-item clauses [concept.signed.int] and [concept.unsigned.int] have been merged into their parent, [concept.integral].
Legacy concept names changed from Cpp98Something to Cpp17Something. Many of these concepts did not exist in C++98 (which in any case was revoked and replaced by C++03).
Reworked "uniform random bit generator" requirements to describe them in terms
of the UniformRandomBitGenerator
concept.
Removed "there need be no subsumption relationship" wording that is already implied by the core language rules for concepts.
The claue reorganization described in P1076R1 and discussed at the WG21 Rapperswil meeting has been applied to the working draft, with the following modifications:
[class.copy] was left containing only two paragraphs of text, neither of which had any normative impact. It has been removed.
The top-level subclauses of [algorithms] have been reordered to make the
description of the <numeric>
header fit better into its structure.
Several paragraphs of [class] describing various properties of classes have been moved into a new subclause [class.prop] "Properties of clases".
The single-item subclauses [move.iter.op=] and [move.iter.op.const] have been merged into [move.iter.cons].
The single-item subclauses [move.iter.op.star], [move.iter.op.ref], and [move.iter.op.index] have been merged into [move.iter.elem].
The single-item subclauses [move.iter.op.+], [move.iter.op.-], [move.iter.op.incr], [move.iter.op.+=], [move.iter.op.decr], and [move.iter.op.-=] have been merged into [move.iter.nav].
The now-empty [move.iter.ops] has been removed.
A log of editorial fixes made to the working draft since N4750 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.
commit afe115acc28e33e48e2ece9f850820d6faa51757
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jul 6 10:47:19 2018 +0200
[class] Introduce a subheading 'Properties of classes'.
commit d3f80a4a994a66cc8148a6031d29182aad4f16f6
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sat Jul 7 00:49:56 2018 +0200
[namespace.udecl] Demote normative duplication to notes (#1976)
The effects of using-declarations naming member functions
are discussed in other parts of the standard.
The effects of initializing with an inherited constructor are
discussed elsewhere, too.
commit 9459c137f138f903d670e6689b3963f0a3f7d083
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jul 6 10:40:09 2018 +0200
[time.point,time.duration] Remove class name repeated in subheadings (#2249)
commit 56c599f71e8a9cfe77233e5dcd77ccfe72d81af8
Author: Richard Smith <richard@metafoo.co.uk>
Date: Thu Jul 5 20:22:47 2018 -0700
[algorithm.syn] Reorder after [algorithms.requirements] and
[algorithms.parallel], which apply to both <algorithm> and <numeric>.
commit 8806777151719da531aae976c46f98c485bf0580
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jul 4 08:39:53 2018 +0200
[algorithms] Integrate requirements from [numeric.ops].
commit e8d3d7029c5be1494016bc03e0004d0e9eeaa8cd
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jul 4 08:25:30 2018 +0200
Remove [class.copy] and adjust cross-references pointing there.
The normative statements that used to be contained in
[class.copy] were redundant with [dcl.init] and [over.ass].
commit 006fb15de62c93b6e3de3d32648f276c9ec70181
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jul 4 00:29:28 2018 +0200
[class.derived,class.access,special] Move into [class], as appropriate.
P1076R1: Editorial clause reorganization
commit 3c580cd204fde95a21de1830ace75d14d429f845
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jul 4 00:07:05 2018 +0200
[dcl.decl] Move into [dcl.dcl] as appropriate.
P1076R1: Editorial clause reorganization
commit 40907944b775e4da980b69565dcbaa4bd494d347
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jul 4 00:00:51 2018 +0200
[namespace.udecl] Move one level up
P1076R1: Editorial clause reorganization
commit f87c7fd1d9a258d043b7b22fb13ce6bdf6931a28
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Jul 3 23:54:36 2018 +0200
[numeric.ops] Move into [algorithms], after [alg.sorting]
P1076R1: Editorial clause reorganization
commit 40719643c5f237aecf0136a001cce1d85ceaaf59
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Jul 3 23:48:00 2018 +0200
[localization] Move to before [input.output]
P1076R1: Editorial clause reorganization
commit a41eef0a98e9727ca85ff12c99b27209969a62b8
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Jul 3 23:37:46 2018 +0200
[time.general] Add summary table
commit 63603768789149c9b46bac7e810ddfb618e8eefe
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Jul 3 23:30:45 2018 +0200
[time] Promote to a top-level clause.
P1076R1: Editorial clause reorganization
commit 006a9380cfe9e00bcee9b03884b3b4bf57bf6fa2
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Jul 3 23:22:05 2018 +0200
[conv] Move as a subclause into [expr], immediately before [expr.arith.conv]
P1076R1: Editorial clause reorganization
commit 70adb738f6edbc0697d1f26c72040d6b3a971421
Author: Hubert Tong <hubert-reinterpretcast@users.noreply.github.com>
Date: Thu Jul 5 16:22:22 2018 -0400
[intro.defs] Use https in hyperlink URL; see Directives, Part 2:2018 (#2248)
commit 3fe46c716367d6e367b4c5acff344bce3f2a5cd2
Author: Jonathan Wakely <cxx@kayari.org>
Date: Fri May 11 11:53:45 2018 +0100
[class] Reformat paragraph defining standard-layout class
Move the note before the definition of M(X).
Use a nested list for the definition of M(X).
Move the example to a new paragraph.
commit 0cac48775c1b1db4038cc0e456ccef81d5dd5fdc
Author: timsong-cpp <rs2740@gmail.com>
Date: Mon Jul 2 17:13:53 2018 -0400
[concepts.{lang,compare,callable}.general] Replace "section" with "subclause".
commit 9db2f62e966224e8e749913871771dd4ac886c78
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 09:08:21 2018 +0200
[basic.start,except] Harmonize references to std::terminate
commit 3846e6ba6592099145655420e3b88c6c874cd5fc
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 1 10:05:58 2018 +0200
[over.match.viable] Fix cross-reference to satisfaction of constraints
commit 61e272c36350786e8b3fa1662efb0a8b9484cdd5
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Thu Jun 14 11:08:25 2018 +0200
[dcl.init.ref] Avoid use of 'underlying type' for references
commit c56870954b48305df89133a80e6ab8a21a0a90e9
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date: Mon Jul 2 17:10:38 2018 -0400
[temp.constr.constr], [iterator.requirements.general], [re.results.size] Replace "section" with "subclause"
commit f3b625826ae894613c9ec47bd4e1874fc46e71d4
Author: timsong-cpp <rs2740@gmail.com>
Date: Mon Jul 2 17:05:50 2018 -0400
[concepts.object] Dissolve single-item subclauses. (#2240)
The following subclause headings have been removed:
[concept.movable]
[concept.copyable]
[concept.semiregular]
[concept.regular]
The content for these former subclauses now resides in the parent subclause, [concepts.object].
commit 75c9148c3d810a825765aef9f04f9689f678f7bf
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date: Sat Jun 16 15:57:32 2018 -0400
[re.general] Refer to table as done in the other clauses
commit 2fdaf88fcffd65ea2ccc4e032e288c74ac94bb7d
Author: Richard Smith <richard@metafoo.co.uk>
Date: Mon Jul 2 11:52:45 2018 -0700
[basic.lookup.unqual] Finesse "class definition" footnote to avoid
saying that a class definition is one of two components of the
definition of a class.
commit 4d757ab4026f2b1af37ea1f3c6fb8fbd4c83f0dc
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sat Jun 30 00:23:57 2018 +0200
[class.mem] Define complete-class context
and use it, instead of having separate redundant lists
in [basic.scope.class] and [basic.lookup.unqual].
commit ade8b020efbfa8fd220d1ed7f230850f2849d593
Author: S. B. Tam <cpplearner@outlook.com>
Date: Tue Jul 3 02:32:45 2018 +0800
[expr.prim.id.{un,}qual] A structured binding name is an lvalue (#2234)
Fix wording here to match corresponding wording in [dcl.struct.bind].
commit 809a034ac0428dc71d3b07bb15c39a1131d2e3f8
Author: Michael Adams <mdadams@ece.uvic.ca>
Date: Mon Jul 2 11:30:48 2018 -0700
[class.copy.elision] Fix typo that accidentally makes example ill-formed
commit 61b25c662399e7ebd126ee6771126aa29fed407e
Author: timsong-cpp <rs2740@gmail.com>
Date: Sat Jun 30 05:27:09 2018 -0400
[{i,o}{string,f}stream.cons] Remove unmatched parenthesis (#2233)
commit 0420f57904322da8adc32890687dc914d5c06edc
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Jun 19 11:23:54 2018 +0200
[dcl.attr.contract] Introduce subheadings and reorder paragraphs to fit
commit 492e6a79cd4b36488c248771b73b46ba54ec27a6
Author: Johel Ernesto Guerrero Peña <johelegp@gmail.com>
Date: Wed Jun 27 21:18:27 2018 -0400
[variant.get] Consistently place comma after "otherwise"
commit 5326a0d1311682568eccd19b1f8c2512091a2a53
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Thu Jun 28 12:42:25 2018 +0200
[input.iterators,fs.rec.dir.itr.members] Disambiguate phrasing for previous value of iterators
commit 2f5d2cbcd69c0cb63bad481f44d32082dd68ea6c
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Thu Jun 28 23:54:24 2018 +0200
[depr.locale.stdcvt.req] Add normative references for encoding forms
commit 69d7e1ffeed2187c1986f727882e65890c6dfa0f
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 29 00:08:44 2018 +0200
[optional] Move requirements from header synopsis to class template
commit 6116910802836c517ecde9237b6ffabcdafc26cf
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 29 00:15:09 2018 +0200
[basic.fundamental] Add definition of 'fundamental type'
commit b65061ee7d81079e72b2467ac9307ba9a24aaf00
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 29 13:41:11 2018 +0200
[expr.prim.lambda,depr.capture.this] Replace 'lambda expression'
with the grammar term 'lambda-expression'.
Also remove the unused definition of 'local lambda expression'.
commit 354fa005c1b8ad55ddd1bca31bf4f8bef67db46e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri May 25 10:37:36 2018 +0200
[dcl.init,over.match.ctor] Clarify copy-initialization for empty arguments.
Also turn the enumeration of direct-initialization cases into
a bulleted list, referring to grammar non-terminals.
commit 69259f9d29a571233908c4f9be5afc9b98e9a2e3
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri May 25 01:14:17 2018 +0200
Drop redundant 'expression'
when calling out a value category.
commit 09f1354234154602dee9a0afc12f0b160bf455ea
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 29 13:59:12 2018 -0700
[dcl.attr.contract] Fix mention of odr-use of a parameter value to talk
about odr-use of the parameter instead; values can't be odr-used.
As agreed on the core reflector.
commit 45fa09c5e38057571284c3eda52aa479afa0f3cb
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 29 17:38:17 2018 +0200
[temp.dep] Fix typo 'An expressions...' (#2181)
commit 50a00f2776122a1328d29332f45e3ec20ee6d0fb
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 29 00:53:00 2018 +0200
[lex] Cite ISO/IEC 10646 correctly (#2226)
commit 6f6a5dd6de12968f447940049d7fbf447e0ccf9f
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue May 8 13:29:32 2018 +0200
[atomics.types.operations] Avoid inappropriate use of 'underlying type'
commit 35e17ec6e2f702be4c31fd99c058404223a865da
Author: Casey Carter <Casey@Carter.net>
Date: Thu Jun 28 12:28:20 2018 -0700
[algorithm.syn] Relocate the "partitions" algorithms (#2219)
Move the synopsis for the "partitions" algorithms between the "binary_search" family and the "merge" family, to agree with the order of the detailed specifications as reordered by #1245.
commit 03e97ca6af73a842d38d40977a2630b0c978eade
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Thu Apr 19 23:12:20 2018 +0200
[temp.arg.explicit,temp.mem] Clarify note about explicit template arguments
for conversion function templates and constructor templates.
commit cdad8c27d822e5aec90b86a6e72e6f093d204924
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Apr 3 23:33:29 2018 +0200
[move.iterators] Dissolve single-item subclauses.
commit 1f9524d9b2a2ec95e7b48ec82ff9782e2b79d413
Author: Thomas Köppe <tkoeppe@google.com>
Date: Wed Jun 27 22:42:53 2018 +0100
[support.limits.general] Fix typo: '<forwardlist>' should be '<forward_list>'
commit e0d78d373e975ccbc7cd59d5b7292c48f920b959
Author: Alisdair Meredith <public@alisdairm.net>
Date: Wed Jun 27 17:33:20 2018 -0400
[span.overview] Fix reverse_iterator for span (#2112)
There is a common convention to omit 'std::' when not strictly needed,
other than for 'std::move' and 'std::forward'. A third case is for
'reverse_iterator' and 'const_reverse_iterator' type aliases inside a
class definition, as the leading 'reverse_iterator' type alias hides
the 'std' version from the 'const_reverse_iterator' definition, and
subsequently fails to compile. This patch restore the class definition
to a safely copy/pastable state.
An additional review indicated this convention has been applied correctly
for every othert potential occurrence in the library.
commit 33e8e2b3c5c2ae9e53ed656f7e3dfe874e55ede3
Author: Casey Carter <Casey@Carter.net>
Date: Wed Jun 27 14:32:34 2018 -0700
[output.iterators] Strike useless sentence from note (#2083)
There's no such thing as an "insert pointer," and the rest of this sentence isn't much better.
commit fe3f46b976c8c19336f0007625fe3e487827ca55
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date: Wed Jun 27 12:12:45 2018 -0700
Harmonize phrasings of "this destructor is trivial". (#2191)
Inspired by P0602 https://lichray.github.io/trivially_variant.html
Zhihao suggested that we harmonize "trivially destructible"
wording across the rest of the Standard.
commit 14809d0b4b27395ea407734d00d0f6dc9c7b0c05
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jun 27 21:04:50 2018 +0200
[expr.spaceship] Fix typo for std::strong_equality::nonequal (#2216)
commit 2954bfccb653504279f101cf1d8c7f9fb96947ff
Author: Sergey Zubkov <cubbi@cubbi.com>
Date: Wed Jun 27 15:03:49 2018 -0400
[diff.cpp17.depr] Fix typo from P0619R4 (#2217)
In the paper, "raw_memory_iterator" was meant to say "raw_storage_iterator".
commit 264839261e3d0b0cb66415f2c1755d1f84d2cb3d
Author: timsong-cpp <rs2740@gmail.com>
Date: Wed Jun 27 06:51:41 2018 -0400
[istreambuf.iterator.proxy] correct title and remove default template argument (#2078)
This is a class, not a class template. Also, the default template argument is 1) redundant and 2) ill-formed for violating [temp.param]p12.
commit e6794e6f167db93a519564d5fc986309d194e140
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jun 27 12:49:39 2018 +0200
[syserr] Remove class name repeated in subheadings (#2093)
commit f0e7cdd3392e91b427764abf1c9c30058a457143
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jun 27 12:49:12 2018 +0200
[smartptr] Remove class name repeated in subheadings (#2092)
commit a92cdcb6ca8aa43e49a54d22f8760e9ca9cbaad7
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jun 27 12:48:03 2018 +0200
[vector.cons] vector(const Allocator&) should be noexcept (#2182)
This fixes an oversight in the wording of
"N4258: Cleaning‐up noexcept in the Library",
which updated the overview, but not the description.
commit f4a6f328137fa59bf3aa319eb4ccb743b2205dfc
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 26 19:06:44 2018 -0700
[alg.sorting] Fix grammar.
commit de4ddf0a8fa164c7b451b6bb500c492681a7738c
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 26 20:00:54 2018 -0700
[cpp.cond], [cpp.predefined], [support.limits.general] Add feature-test
macros from 2018-06 motions:
__has_cpp_attribute(assert)
__has_cpp_attribute(ensures)
__has_cpp_attribute(expects)
__cpp_explicit_bool
__cpp_nontype_template_parameter_class
__cpp_lib_atomic_ref
__cpp_lib_bit_cast
__cpp_lib_concepts
__cpp_lib_constexpr_swap_algorithms
__cpp_lib_list_remove_return_type
... all with value 201806L.
commit 1984951deba6caeb117300b198e349b0e9bf841c
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 26 18:24:56 2018 -0700
[meta.type.trans] Strike redundant and confusing note on type member of
basic_common_reference, and replace it with a clarifying description of
the primary template.
commit a5a086fada4312ee1794a5d2cb65a7ce5ac284d4
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 26 17:51:24 2018 -0700
[meta.trans.other] Replace "(possibly cv) void" with just "cv void".
These two formulations mean the same thing.
commit cc393db472ef7e89fa4e8bc8bcce6e44979efd5e
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 26 17:43:51 2018 -0700
[concept.strictweakorder] Fix grammar in note.
commit 01f681dd376ec6285fae0253d21745999fd9557f
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 26 14:50:39 2018 -0700
[concept.equalitycomparable] Remove note that the equality-preserving
nature of == implies that == is reflexive. This turns out to not quite
be justified by the normative rules.
commit fbc2eef266332b8dea52718640ceca7cde9d6c1f
Author: Richard Smith <richard@metafoo.co.uk>
Date: Mon Jun 25 18:25:06 2018 -0700
[concept.boolean] Reword satisfaction rules for Boolean to make them not
appear to depend on the "given" lvalues b1 and b2.
commit d324da9c1ea4702dfb2d595390114d872f29089e
Author: Richard Smith <richard@metafoo.co.uk>
Date: Mon Jun 25 18:15:28 2018 -0700
[concept.destructible] Fix meaningless phrase "potentially-throwing,
even if non-throwing".
By definition, non-throwing is the opposite of potentially-throwing for
an exception-specification ([except.spec]p1).
commit 4ac1f96f51c998846ce97e81c793484a52318357
Author: Richard Smith <richard@metafoo.co.uk>
Date: Mon Jun 25 17:34:27 2018 -0700
[concepts.equality] Add missing paragraph numbers, reorder implicit
expression variations in example for clarity and to fix overfull hbox.
commit 60ae4bf7daae6802fefef5a5f32c1d2248a51334
Author: Casey Carter <Casey@Carter.net>
Date: Fri Jun 22 20:28:23 2018 -0700
[concepts] There need be no "there need be no subsumption relationship"
... the core language rules already imply it.
commit 11b6f1844a7b43a232d55442f4af7f9ce20faa45
Author: Casey Carter <Casey@Carter.net>
Date: Fri Jun 22 21:14:00 2018 -0700
[structure.requirements] Add paragraph explaining the typographical convention for requirement names
commit bfaea046b5176152a86514a886a5b7ab66e4dffe
Author: Casey Carter <Casey@Carter.net>
Date: Wed Jun 20 09:39:06 2018 -0700
[rand.req.urng] Rework URBG requirements for clarity and simplicitly
... by removing the redundance between the new concept and the "old" requirements.
Also fixup the reference in [rand.req.eng] to properly refer [rand.req.urng] instead of the requirements table. The table has been removed, and the reference should have been to the subclause in the first place to clearly incorporate the requirements outside of the table.
commit def89125ccf441d2178e6159d6b9448f17045f6a
Author: Casey Carter <Casey@Carter.net>
Date: Wed Jun 20 11:21:43 2018 -0700
[meta.trans.other] Remove basic_common_reference requirement with no normative effect.
We already say that only T and U can be specialized. We do not need to
also say that TQual and UQual cannot be. Also clarify that users may
*partially* specialize basic_common_reference.
commit 528d382ca9b350c3aece9a57e23a2560b7ba0651
Author: Casey Carter <Casey@Carter.net>
Date: Tue Jun 19 16:31:00 2018 -0700
[meta.trans.other] Make style of common_type and common_reference consistent
...by tagging the specification of common_reference with "Note C" and basic_common_reference "Note D".
Also remove the allowance to specialize basic_common_reference "if at least one template parameter in the specialization depends on a program-defined type"; it's redundant with "...pursuant to [namespace.std]". (This is consistent with `common_type`'s wording.)
commit 2aa8b236c8afe09272fba8d0767fbc6552b301b5
Author: Casey Carter <Casey@Carter.net>
Date: Tue Jun 19 16:06:03 2018 -0700
[structure.requirements] Rephrase para 8 for clarity
commit d9c710c4f13c95d65f96d503bd45f11628fdf68a
Author: Casey Carter <Casey@Carter.net>
Date: Mon Jun 18 06:55:44 2018 -0700
[concepts.general][library.general] Concepts constrain template arguments, not parameters
commit a818d5bfb084da10818b830d210d8bb4312912e4
Author: Casey Carter <Casey@Carter.net>
Date: Thu Jun 21 09:38:44 2018 -0700
[concepts.swappable] Correct example
commit db9aee9ca04a192f32cd630cf3682d30c62a0bf7
Author: Casey Carter <Casey@Carter.net>
Date: Tue Jun 19 15:34:43 2018 -0700
[customization.point.object][meta.trans.other] Replace "user-defined" added by P0898R3 with "program-defined"
...to be consistent with the intent of LWG2139
commit 03f3764a071dfe30ef1137435a88ea036ca65c1f
Author: Casey Carter <Casey@Carter.net>
Date: Wed Jun 20 15:16:51 2018 -0700
[definitions] Redefine expression-equivalent per ISO directives
To be replaceable in context, and add a clarifying example.
commit d119277cb8864be440a6e0445211c232e87f91a7
Author: Casey Carter <Casey@Carter.net>
Date: Thu Jun 21 09:18:24 2018 -0700
[concepts] Rephrase ocurrences of "must"
commit 16b35d651de53654321b584eba2c6c4e126eb7d8
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 22 18:08:26 2018 -0700
[depr.c.headers] Undo P0619R4's removal of synopses for <ccomplex>,
<cstdalign>, <cstdbool>, and <ctgmath>.
Instead, repurpose these to be synopses for <complex.h>, <stdalign.h>,
<stdbool.h>, and <tgmath.h>, and move them into [depr.c.headers].
Also introduce a synopsis for <iso646.h>.
This avoids three of these five headers being specified as equivalent to
a non-existent <cfoo> header, and the other two missing a synopsis.
commit cf0749742b9318143505f9ffe2d4dabb5420d727
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 22 17:17:41 2018 -0700
[diff.cpp17.library] Fix description of how to adjust code for the
removal of <ccomplex> and <ctgmath>.
commit fa04176c01dd10105eec6590407b2c76384f5c52
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 22 17:06:40 2018 -0700
[diff.cpp17.library] Fix list of new headers compared to C++17.
commit 9e80b6c69467fb2fb146637e1f0fca8b7495250f
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 22 16:59:45 2018 -0700
[diff.cpp17.except] Fix Rationale to be a rationale.
"This was retained for one additional C++ standard to ease transition"
is not a rationale for removing the feature now.
commit 043ee628bc8accbe7f1ac4dc2210e88186bc95a4
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 22 16:41:51 2018 -0700
[diff.cpp17.except] Add a note that there is no longer a way to write
code that is non-throwing in both C++20 and C++03.
commit fd244b515387efde9fb08ffe183985a38e93d184
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 22 16:29:19 2018 -0700
[diff.cpp03.language.support] Remove change described in p1, which is no
longer a possible change.
It is not possible to write a global replacement operator new or
operator delete in C++20 with code that is also valid C++03, because
a) operator new must be declared 'throw(std::bad_alloc)' in C++03 and
must be declared with no exception specification in C++11 onwards,
and
b) operator delete must be declared 'throw()' in C++03 and must be
declared 'noexcept' in C++20 onwards.
Therefore there is no code that is valid in C++03 and C++20 and changes
meaning due to the change identified in this section.
Instead, expand [diff.cpp03.language.support]p2 to explain that the
affected programs are simply not valid in C++20.
commit 3e80cd4c07563639a8ca55d41d704701ae6d0eb4
Author: Richard Smith <richard@metafoo.co.uk>
Date: Fri Jun 22 16:07:09 2018 -0700
[complex.special] Reorder defaulted complex copy constructor to
emphasize relationship between it and the converting constructors.
commit 74539419429281072e1f8b787a0ce0dc2bb067db
Author: Richard Smith <richard@metafoo.co.uk>
Date: Thu Jun 21 20:09:23 2018 -0700
[atomics.ref] Reword introductory sentences to avoid overfull hbox.
commit 3c21cfcfa1091a406d4b384e4677f0fa0e8ea75c
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Mon Jun 11 19:10:53 2018 +0200
[alg.shift] Avoid undefined iterator arithmetic on ForwardIterator.
Avoid using the undefined concept BidirectionalIterator.
commit 949892305c88abd7c2ecb15a77bde3222366733d
Author: Jonathan Wakely <cxx@kayari.org>
Date: Mon Jun 11 23:43:22 2018 +0100
[structure.specifications] remove "implementation-defined" from example
mentioning [[expects]] and add cross-reference to [[expects]] attribute.
commit 23c6b62f321d463792c54db38a89b335dc232f3e
Author: Jonathan Wakely <cxx@kayari.org>
Date: Mon Jun 11 23:41:37 2018 +0100
[structure.specifications] replace "paragraph" with "element"
commit 4aa23529058e5f17f74e663ff189a1548812e009
Author: Jonathan Wakely <cxx@kayari.org>
Date: Mon Jun 11 23:37:31 2018 +0100
[res.on.required] replace "paragraph" with "element"
commit 3b24b2dc75bd5b80d2c5fc1cb3fdb62ac3852d8d
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 19 17:13:17 2018 -0700
[diff.cpp17] Correct description of explicit(bool) compatibility.
Parenthesized names for explicit constructors and conversion functions
are still valid if the name doesn't immediately follow the explicit
keyword. Add an example using explicit(true) as a hint indicating how
to get the same effect.
Change affected subclauses from [dcl.fct] to the somewhat-more-precise
[class.ctor] and [class.conv.fct].
commit 001a2011d172cce2784857a492e2c37e25ade7e9
Author: Richard Smith <richard@metafoo.co.uk>
Date: Mon Jun 18 18:19:39 2018 -0700
[dcl.attr.contract] Fix typeface of std::terminate in comment.
commit 913c83a98735709462a49613f8993bca4042ed70
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sun Jun 17 09:18:08 2018 +0200
[dcl.attr.contract] Move according to alphabetical sorting of headings
commit 463ab8dc3726514b2adf8dcf6816262f58688da3
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 11:01:23 2018 +0200
[except.terminate] Clarify evaluation of a contract
commit f2f60fd4c3f9810ae815a408e1fd3ac1462482c7
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:53:18 2018 +0200
[temp.explicit] Remove redundant rules for contracts
given that [dcl.attr.grammar] already prohibits
attribute-specifier-seqs for an explicit instantiation.
commit a7a0e115dbf5f149936a04f57b9dd3174c9efa6a
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:51:04 2018 +0200
[class.virtual] Fix comment in example
commit ca0d62cc3d8c397d843fe1e1ae4a80f8fa389587
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:42:25 2018 +0200
[dcl.attr.contract] Fix sentence defining violation handler
commit 0cd3f3dc072d736b4e8572311918bdccbb91e1f7
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:33:54 2018 +0200
[dcl.attr.contract] Clarify evaluation of non-checked contracts
commit 2930dc55b0c5573aad90c22e1909f98bb9bec4c2
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:18:18 2018 +0200
[dcl.attr.contract] Permit modifications of temporaries within the predicate.
commit 87c3c20540b99708b02ce3dfc6a792a3fea454aa
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:17:19 2018 +0200
[dcl.attr.contract] Clarify that assertions may apply to a null statement
commit 072f42df7b298c3677b2a1e8f1a4687d1e005ffc
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:10:53 2018 +0200
[dcl.attr.contract] Clarify rules on std::contract_violation
commit 77579d2f9527552820dfc667867589da12adceda
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 10:08:09 2018 +0200
[dcl.attr.contract] Predicates of a contract are potentially evaluated,
as per the definition in [basic.def.odr], so turn the
redundant normative statement into a note.
commit da24c5df270fc17a82b6767aef5baee94fba4a45
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Fri Jun 15 09:43:43 2018 +0200
[basic.def.odr] Rephrase ODR rule for contracts
commit 0fc2af6bbe05e16feb03e8f24651ea12e8a6997c
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sun Jun 10 22:53:26 2018 +0200
[dcl.attr.contract] Reorder paragraphs for more coherence.
Also move rules on virtual functions to [class.virtual].
Rephase assertion checking along pre/postcondition checking.
commit 42019fd86775859393e7e5edc7e8d4c2e64c8019
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sun Jun 10 22:24:18 2018 +0200
[basic.def.odr] Rephrase build level and continuation mode requirements
commit ac603143816388fa8fa12a8fb0802130b6643884
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sun Jun 10 22:17:23 2018 +0200
[dcl.attr.contract] Rephrase comments in examples
commit 19d07dec4cbe5ae86eb6231eb833d166c5939faf
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sun Jun 10 22:14:46 2018 +0200
[except.terminate] Add contract violation with continuation mode off
commit f28517ab52f7bf80879a7883fe08bb97020f80da
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Sun Jun 10 21:17:50 2018 +0200
[dcl.attr.contract] Avoid duplication of 'renaming' in enumeration
commit a8b8e534a7a5235157333f6a9f64c339e48e0e86
Author: Richard Smith <richard@metafoo.co.uk>
Date: Mon Jun 11 15:56:16 2018 -0700
[basic.stc.dynamic.deallocation] Remove confusing note.
This note is only correct due to subtleties of later wording
(particularly that a destroying operator delete cannot be a function
template). Correcting it results in it simply duplicating existing
normative rules and not adding anything. So remove it instead.
commit e4f579e421dac17ff36f98b2211d143991de7850
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jun 13 09:16:17 2018 +0200
[temp.arg.nontype] Fix example involving string literal
P0732R2 contained some changes to this section that were missing
explicit markup; apply those changes too. Also fix missing definition of
operator<=> in class type used as type of non-type template parameter.
commit 5cca3b5015491a6c8b5d1d63f651073940d1145e
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jun 13 08:34:52 2018 +0200
[dcl.fct] Move function definition rule to [dcl.fct.def.general]
This is the rule that requires complete non-abstract
types function parameter or return types.
commit b39b44b32394384edcc8f7f682274fbffd22f067
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Wed Jun 13 08:28:26 2018 +0200
[temp.deduct] Forming an array of abstract class type is not deduction failure
commit ba6cd4c525371eb98c60a025da21e5ca813b4a94
Author: Thomas Köppe <tkoeppe@google.com>
Date: Thu Jun 14 21:48:23 2018 +0100
[cpp.subst] Reword paragraph to simplify the logical structure and avoid ambiguous references.
commit 4ce05424a8774e13b9958eb9cb9165da5b19edb0
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 12 16:27:40 2018 -0700
[depr.capture.this] Reorder so the order of Annex D matches the order of the main text
commit 628a32db863ac10fe0fb4c45d6975a50f5497acf
Author: Richard Smith <richard@metafoo.co.uk>
Date: Tue Jun 12 16:26:37 2018 -0700
[depr.capture.this] Replace "can" with "may".
This wording is describing permission, not capability, so should use "may".
commit 5274b2ee4c558d39012a34d104be0d2139115c00
Author: Thomas Köppe <tkoeppe@google.com>
Date: Fri Jun 15 14:31:14 2018 +0100
[temp.deduct] Fixes from editorial review of CWG2293:
* Use "not valid" rather than "invalid", since only "valid" has been defined.
* Add an "otherwise" to improve flow.
commit 0e771884acfdcb1dc693ef654f34cf717986f803
Author: Jonathan Wakely <github@kayari.org>
Date: Fri Jun 8 08:23:25 2018 +0100
[time.zone.db.remote] replace "this section" with "this subclause" (#2103)
commit b9c5272c78fb312883cb548219b7fd2cb44280c7
Author: Thomas Köppe <tkoeppe@google.com>
Date: Thu Jun 7 23:24:37 2018 +0200
[cfenv.syn] Add "optional" markers for macros from the C library that are optional (as defined by C)
commit aa77121b3aa9bc566b8d2e428cd21a28493ce57e
Author: Alberto Barbati <2210776+iaanus@users.noreply.github.com>
Date: Thu Jun 7 21:39:51 2018 +0200
[dcl.attr.likelihood] Fix error in example
commit fbee1d521da91a798d81ecc09f110a0946239630
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Thu Jun 7 21:36:42 2018 +0200
[views.general] Remove redundant introduction for span. (#2062)
commit 069a179a0d54cad4b3d00f00eae532c827786894
Author: Jens Maurer <Jens.Maurer@gmx.net>
Date: Tue Mar 27 14:41:13 2018 +0200
[cmp.syn] Rename to [compare.syn] to match the header name
commit 8a0060d0dcda8c63a2c432016bd038c75a8de9a1
Author: Marc Mutz <marc.mutz@kdab.com>
Date: Thu Jun 7 03:34:12 2018 +0200
[list.modifiers, forward.list.modifiers] Add missing 'to' in 'referred [to] by' (#2100)
commit 57de3af9d24037d60d996b255c1ded8ee65387d2
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date: Wed May 30 00:18:13 2018 -0700
[comparisons] Fix a typo in the note for `std::less`. (#2089)
commit 61b6c21f218e3cbb9d15426975f1a26d8b72a7fe
Author: Richard Smith <richard@metafoo.co.uk>
Date: Thu May 10 14:40:22 2018 -0700
[class.expl.init] Fix example to account for guaranteed copy omission.