-
Notifications
You must be signed in to change notification settings - Fork 769
/
Copy pathn4812.html
813 lines (580 loc) · 34.2 KB
/
n4812.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
<!DOCTYPE html><html><head><meta charset="utf-8"><style>html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
body{
color:#444;
font-family:Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman',
"Hiragino Sans GB", "STXihei", "微软雅黑", serif;
font-size:12px;
line-height:1.5em;
background:#fefefe;
width: 45em;
margin: 10px auto;
padding: 1em;
outline: 1300px solid #FAFAFA;
}
a{ color: #0645ad; text-decoration:none;}
a:visited{ color: #0b0080; }
a:hover{ color: #06e; }
a:active{ color:#faa700; }
a:focus{ outline: thin dotted; }
a:hover, a:active{ outline: 0; }
span.backtick {
border:1px solid #EAEAEA;
border-radius:3px;
background:#F8F8F8;
padding:0 3px 0 3px;
}
::-moz-selection{background:rgba(255,255,0,0.3);color:#000}
::selection{background:rgba(255,255,0,0.3);color:#000}
a::-moz-selection{background:rgba(255,255,0,0.3);color:#0645ad}
a::selection{background:rgba(255,255,0,0.3);color:#0645ad}
p{
margin:1em 0;
}
img{
max-width:100%;
}
h1,h2,h3,h4,h5,h6{
font-weight:normal;
color:#111;
line-height:1em;
}
h4,h5,h6{ font-weight: bold; }
h1{ font-size:2.5em; }
h2{ font-size:2em; border-bottom:1px solid silver; padding-bottom: 5px; }
h3{ font-size:1.5em; }
h4{ font-size:1.2em; }
h5{ font-size:1em; }
h6{ font-size:0.9em; }
blockquote{
color:#666666;
margin:0;
padding-left: 3em;
border-left: 0.5em #EEE solid;
}
hr { display: block; height: 2px; border: 0; border-top: 1px solid #aaa;border-bottom: 1px solid #eee; margin: 1em 0; padding: 0; }
pre , code, kbd, samp {
color: #000;
font-family: monospace;
font-size: 0.88em;
border-radius:3px;
background-color: #F8F8F8;
border: 1px solid #CCC;
}
pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 5px 12px;}
pre code { border: 0px !important; padding: 0;}
code { padding: 0 3px 0 3px; }
b, strong { font-weight: bold; }
dfn { font-style: italic; }
ins { background: #ff9; color: #000; text-decoration: none; }
mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
sup { top: -0.5em; }
sub { bottom: -0.25em; }
ul, ol { margin: 1em 0; padding: 0 0 0 2em; }
li p:last-child { margin:0 }
dd { margin: 0 0 0 2em; }
img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }
table { border-collapse: collapse; border-spacing: 0; }
td { vertical-align: top; }
@media only screen and (min-width: 480px) {
body{font-size:14px;}
}
@media only screen and (min-width: 768px) {
body{font-size:16px;}
}
@media print {
* { background: transparent !important; color: black !important; filter:none !important; -ms-filter: none !important; }
body{font-size:12pt; max-width:100%; outline:none;}
a, a:visited { text-decoration: underline; }
hr { height: 1px; border:0; border-bottom:1px solid black; }
a[href]:after { content: " (" attr(href) ")"; }
abbr[title]:after { content: " (" attr(title) ")"; }
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
pre, blockquote { border: 1px solid #999; padding-right: 1em; page-break-inside: avoid; }
tr, img { page-break-inside: avoid; }
img { max-width: 100% !important; }
@page :left { margin: 15mm 20mm 15mm 10mm; }
@page :right { margin: 15mm 10mm 15mm 20mm; }
p, h2, h3 { orphans: 3; widows: 3; }
h2, h3 { page-break-after: avoid; }
}
</style><title>N4812</title></head><body>
<h1>N4812 Editors' Report -- Programming Languages -- C++</h1>
<p>2019-03-21 <br />
Richard Smith (editor) (Google Inc) <br />
Thomas Köppe (co-editor) (Google DeepMind) <br />
Jens Maurer (co-editor) <br />
Dawn Perchik (co-editor) (Bright Side Computing, LLC) <br />
<code><[email protected]></code></p>
<h2>Acknowledgements</h2>
<p>Special thanks to Marshall Clow
for supplying the LaTeX sources for</p>
<ul>
<li><a href="http://wg21.link/p1458r1">P1458R1</a> (LWG motion 7, 42 pages of wording changes)</li>
<li><a href="http://wg21.link/p1459r1">P1459R1</a> (LWG motion 8, 15 pages of wording changes)</li>
<li><a href="http://wg21.link/p1463r1">P1463R1</a> (LWG motion 10, 119 pages of wording changes) and</li>
<li><a href="http://wg21.link/p1464r1">P1464R1</a> (LWG motion 11, 60 pages of wording changes)</li>
</ul>
<p>and to Gor Nishanov
for supplying a pull request for
<a href="http://wg21.link/p0912r5">P0912R5</a> (CWG motion 15, 22 pages of wording changes).</p>
<p>Thanks to all those who have <a href="https://github.com/cplusplus/draft/wiki/How-to-submit-an-editorial-issue">submitted editorial
issues</a>
and to those who have provided pull requests with fixes.</p>
<h2>New papers</h2>
<ul>
<li><a href="http://wg21.link/n4810">N4810</a> is the current working draft for C++20. It replaces <a href="http://wg21.link/n4800">N4800</a>.</li>
<li>N4812 is this Editors' Report.</li>
</ul>
<p>N4811 is a prior version of this Editors' Report, and is hereby rescinded and
replaced by this version. Thanks to Akira Takahashi for identifying errors in
some hyperlink destinations in that document; the hyperlinks in this version of
the Editors' Report have been corrected.</p>
<h2>Motions incorporated into working draft</h2>
<h3>Core working group motions</h3>
<p>CWG motion 1: <a href="http://wg21.link/p1358r0">Core issue resolutions</a> for 14 issues in "ready" status applied, 1 not applied:</p>
<ul>
<li><a href="http://wg21.link/cwg2256">2256</a> Lifetime of trivially-destructible objects</li>
<li><a href="http://wg21.link/cwg2267">2267</a> Copy-initialization of temporary in reference direct-initialization</li>
<li><a href="http://wg21.link/cwg2278">2278</a> Copy elision in constant expressions reconsidered</li>
<li><a href="http://wg21.link/cwg2303">2303</a> Partial ordering and recursive variadic inheritance</li>
<li><a href="http://wg21.link/cwg2309">2309</a> Restrictions on nested statements within constexpr functions</li>
<li><a href="http://wg21.link/cwg2310">2310</a> Type completeness and derived-to-base pointer conversions <strong>see below</strong></li>
<li><a href="http://wg21.link/cwg2317">2317</a> Self-referential default member initializers</li>
<li><a href="http://wg21.link/cwg2318">2318</a> Nondeduced contexts in deduction from a <em>braced-init-list</em></li>
<li><a href="http://wg21.link/cwg2330">2330</a> Missing references to variable templates</li>
<li><a href="http://wg21.link/cwg2331">2331</a> Redundancy in description of class scope <strong>not applied, see below</strong></li>
<li><a href="http://wg21.link/cwg2332">2332</a> <em>template-name</em> as <em>simple-type-name</em> vs <em>injected-class-name</em> <strong>see below</strong></li>
<li><a href="http://wg21.link/cwg2336">2336</a> Destructor characteristics vs potentially-constructed subobjects</li>
<li><a href="http://wg21.link/cwg2352">2352</a> Similar types and reference binding</li>
<li><a href="http://wg21.link/cwg2358">2358</a> Explicit capture of value</li>
<li><a href="http://wg21.link/cwg2360">2360</a> <code>[[maybe_unused]]</code> and structured bindings</li>
</ul>
<p>CWG motion 2: <a href="http://wg21.link/p1359r0">Core issue resolutions</a> for 22 issues in "tentatively ready" status applied, resolving 24 issues:</p>
<ul>
<li><a href="http://wg21.link/cwg581">581</a> Can a templated constructor be explicitly instantiated or specialized?</li>
<li><a href="http://wg21.link/cwg1937">1937</a> Incomplete specification of function pointer from lambda</li>
<li><a href="http://wg21.link/cwg1938">1938</a> Should hosted/freestanding be implementation-defined?</li>
<li><a href="http://wg21.link/cwg2020">2020</a> Inadequate description of odr-use of implicitly-invoked functions <strong>see below</strong></li>
<li><a href="http://wg21.link/cwg2051">2051</a> Simplifying alias rules</li>
<li><a href="http://wg21.link/cwg2083">2083</a> Incorrect cases of odr-use</li>
<li><a href="http://wg21.link/cwg2103">2103</a> Lvalue-to-rvalue conversion is irrelevant in odr-use of a reference <strong>resolved by 2083</strong></li>
<li><a href="http://wg21.link/cwg2170">2170</a> Unclear definition of odr-use for arrays <strong>resolved by 2083</strong></li>
<li><a href="http://wg21.link/cwg2257">2257</a> Lifetime extension of references vs exceptions</li>
<li><a href="http://wg21.link/cwg2266">2266</a> Has dependent type vs is type-dependent</li>
<li><a href="http://wg21.link/cwg2289">2289</a> Uniqueness of structured binding names</li>
<li><a href="http://wg21.link/cwg2353">2353</a> Potential results of a member access expression for a static data member</li>
<li><a href="http://wg21.link/cwg2354">2354</a> Extended alignment and object representation</li>
<li><a href="http://wg21.link/cwg2365">2365</a> Confusing specification for <code>dynamic_cast</code></li>
<li><a href="http://wg21.link/cwg2368">2368</a> Differences in relational and three-way constant comparisons</li>
<li><a href="http://wg21.link/cwg2372">2372</a> Incorrect matching rules for block-scope extern declarations</li>
<li><a href="http://wg21.link/cwg2379">2379</a> Missing prohibition against <code>constexpr</code> in friend declaration</li>
<li><a href="http://wg21.link/cwg2380">2380</a> <em>capture-default</em> makes too many references odr-usable</li>
<li><a href="http://wg21.link/cwg2381">2381</a> Composite pointer type of pointers to plain and <code>noexcept</code> member functions</li>
<li><a href="http://wg21.link/cwg2384">2384</a> Conversion function templates and qualification conversions</li>
<li><a href="http://wg21.link/cwg2385">2385</a> Lookup for <em>conversion-function-id</em>s</li>
<li><a href="http://wg21.link/cwg2386">2386</a> <code>tuple_size</code> requirements for structured binding</li>
<li><a href="http://wg21.link/cwg2387">2387</a> Linkage of const-qualified variable template</li>
<li><a href="http://wg21.link/cwg2394">2394</a> Const-default-constructible for members</li>
</ul>
<p>CWG motion 3: <a href="http://wg21.link/p1286r2">P1286R2 "Contra CWG DR1778"</a> <strong>(DR)</strong></p>
<ul>
<li>Alters resolution of <a href="http://wg21.link/cwg1778">1778</a> <em>exception-specification</em> in explicitly-defaulted functions</li>
</ul>
<p>CWG motion 4: <a href="http://wg21.link/p1091r3">P1091R3 "Extending structured bindings to be more like variable declarations"</a></p>
<p>CWG motion 5: <a href="http://wg21.link/p1381r1">P1381R1 "Reference capture of structured bindings"</a></p>
<p>CWG motion 6: <a href="http://wg21.link/p1041r4">P1041R4 "Make <code>char16_t</code>/<code>char32_t</code> string literals be UTF-16/32"</a></p>
<p>CWG motion 7: <a href="http://wg21.link/p1139r2">P1139R2 "Address wording issues related to ISO 10646"</a></p>
<p>CWG motion 8: <a href="http://wg21.link/p1323r2">P1323R2 "Contract postconditions and return type deduction"</a></p>
<p>CWG motion 9: <a href="http://wg21.link/p0960r3">P0960R3 "Allow initializing aggregates from a parenthesized list of values"</a></p>
<p>CWG motion 10: <a href="http://wg21.link/p1009r2">P1009R2 "Array size deduction in <em>new-expressions</em>"</a> <strong>(DR)</strong></p>
<p>CWG motion 11: <a href="http://wg21.link/p1103r3">P1103R3 "Modules"</a></p>
<p>CWG motion 12: <a href="http://wg21.link/p1185r2">P1185R2 "<code><=></code> <code>!=</code> <code>==</code>"</a></p>
<p>CWG motions 13 and 14 apply to the Reflection TS</p>
<p>CWG motion 15: <a href="http://wg21.link/p0912r5">P0912R5 "Coroutines"</a></p>
<p>Core motions added a total of 24 pages (and 1 Clause) to Clause 1-15</p>
<h3>Library working group motions</h3>
<p>LWG motion 1 applies to the Library Fundamentals TS</p>
<p>LWG motion 2: <a href="http://wg21.link/p1457r0">Library issue resolutions</a> for 2 issues in Ready status and 11 issues in Tentatively Ready status applied:</p>
<ul>
<li><a href="http://wg21.link/lwg3012">3012</a> <code>atomic</code> is unimplementable for non-<code>is_trivially_copy_constructible</code> <code>T</code></li>
<li><a href="http://wg21.link/lwg3040">3040</a> <code>basic_string_view::starts_with</code> <em>Effects</em> are incorrect</li>
<li><a href="http://wg21.link/lwg3077">3077</a> (<code>push</code>|<code>emplace</code>)<code>_back</code> should invalidate the end iterator</li>
<li><a href="http://wg21.link/lwg3087">3087</a> One final <code>&x</code> in [list.ops]</li>
<li><a href="http://wg21.link/lwg3101">3101</a> <code>span</code>'s <code>Container</code> constructors need another constraint</li>
<li><a href="http://wg21.link/lwg3112">3112</a> <code>system_error</code> and <code>filesystem_error</code> constructors taking a <code>string</code> may not be able to meet their postconditions</li>
<li><a href="http://wg21.link/lwg3119">3119</a> Program-definedness of closure types</li>
<li><a href="http://wg21.link/lwg3133">3133</a> Modernizing numeric type requirements</li>
<li><a href="http://wg21.link/lwg3144">3144</a> <code>span</code> does not have a <code>const_pointer</code> typedef</li>
<li><a href="http://wg21.link/lwg3173">3173</a> Enable CTAD for <em><code>ref-view</code></em></li>
<li><a href="http://wg21.link/lwg3179">3179</a> <code>subrange</code> should always model <code>Range</code></li>
<li><a href="http://wg21.link/lwg3180">3180</a> Inconsistently named return type for <code>ranges::minmax_element</code></li>
<li><a href="http://wg21.link/lwg3182">3182</a> Specification of <code>Same</code> could be clearer</li>
</ul>
<p>LWG motion 3: <a href="http://wg21.link/p0339r6">P0339R6 "<code>polymorphic_allocator<></code> as a vocabulary type"</a></p>
<p>LWG motion 4: <a href="http://wg21.link/p0340r3">P0340R3 "Making <code>std::underlying_type</code> SFINAE-friendly"</a></p>
<p>LWG motion 5 was retracted</p>
<p>LWG motion 6: <a href="http://wg21.link/p0738r2">P0738R2 "I Stream, You Stream, We All Stream for <code>istream_iterator</code>"</a></p>
<p>LWG motion 7: <a href="http://wg21.link/p1458r1">P1458R1 "Mandating the standard library: clause 16 - language support library"</a></p>
<p>LWG motion 8: <a href="http://wg21.link/p1459r1">P1459R1 "Mandating the standard library: clause 18 - diagnostics library"</a></p>
<p>LWG motion 9: <a href="http://wg21.link/p1462r1">P1462R1 "Mandating the standard library: clause 20 - strings library"</a></p>
<p>LWG motion 10: <a href="http://wg21.link/p1463r1">P1463R1 "Mandating the standard library: clause 21 - containers library"</a></p>
<p>LWG motion 11: <a href="http://wg21.link/p1464r1">P1464R1 "Mandating the standard library: clause 22 - iterators library"</a></p>
<p>LWG motion 12: <a href="http://wg21.link/p1164r1">P1164R1 "Make <code>create_directory()</code> intuitive"</a> <strong>(DR)</strong></p>
<p>LWG motion 13: <a href="http://wg21.link/p0811r3">P0811R3 "Well-behaved interpolation for numbers and pointers"</a></p>
<p>LWG motion 14: <a href="http://wg21.link/p1001r2">P1001R2 "Target vectorization policies from Parallelism V2 TS"</a></p>
<p>LWG motion 15: <a href="http://wg21.link/p1227r2">P1227R2 "Signed <code>ssize()</code> functions, unsigned <code>size()</code> functions "</a></p>
<p>LWG motion 16: <a href="http://wg21.link/p1252r2">P1252R2 "Ranges design cleanup"</a></p>
<p>LWG motion 17: <a href="http://wg21.link/p1024r3">P1024R3 "Usability enhancements for <code>std::span</code>"</a></p>
<p>LWG motion 18: <a href="http://wg21.link/p0920r2">P0920R2 "Precalculated hash values in lookup"</a></p>
<p>LWG motion 19: <a href="http://wg21.link/p1357r1">P1357R1 "Traits for [un]bounded arrays"</a></p>
<p>Library motions added a total of 7 pages to Clause 16-32.</p>
<h2>Notable editorial changes</h2>
<h3>CWG motion 1</h3>
<p>The edits for CWG2310 inadvertently required the base class to be complete
instead of the derived class in one of the edits. After consultation with CWG,
the derived class is now required to be complete in all cases.</p>
<p>The edits for CWG2331 were intended to be an editorial cleanup and wording
simplification, but were found to have unintentional normative effect. This
issue is being returned to CWG for redrafting.</p>
<p>The edits for CWG2332 added a note that was not entirely accurate. The note,
along with the normative text that it references, have been rephrased to
clarify that an injected-class-name is never interpreted as a <em>template-name</em>
in a context in which class template argument deduction would apply (even
though it can be interpreted as a <em>template-name</em> in some cases in a context
where a <em>decl-specifier</em> might be parsed, such as in a <em>template-argument</em>).</p>
<h3>CWG motion 2</h3>
<p>The wording moved for CWG2020 inadvertently omitted some edits that were part
of the wording reviewed by CWG. Those edits were not substantive, and have been
restored editorially.</p>
<h3>CWG motion 12</h3>
<p>Removed redundant restatement of the <code>operator==</code> symmetry rule in defaulted
<code>operator!=</code>; looking for reversed candidates and rewriting <code>==</code> expressions is
already handled by overload resolution, and a reversed <code>operator==</code> can never
be selected anyway because the two arguments are of the same type.</p>
<p>Likewise the corresponding redundant wording was removed from the rules for
defaulted operators <code><</code>, <code>></code>, <code><=</code>, and <code>>=</code> that inaccurately claimed they
could select a reversed <code>operator<=></code>.</p>
<h3>CWG motion 15</h3>
<p>Modernized the wording to follow current editorial conventions, and simplified
where possible.</p>
<p>Fixed a contradiction between the core and library wording; the library wording
allowed a <code>coroutine_handle<></code> to resume any coroutine, but the core wording
did not account for that possibility and only permitted resumption via a
<code>coroutine_handle<P></code> with the right promise type <code>P</code>.</p>
<h3>LWG motion 2</h3>
<p>Replaced the references to <em>CopyConstructible</em> and <em>CopyAssignable</em> with the
intended <em>Cpp17CopyConstructible</em> and <em>Cpp17CopyAssignable</em> after consultation
with LWG.</p>
<h3>Section label changes</h3>
<p>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, all section labels containing underscores have been renamed
to instead use periods.</p>
<h3>Reversion of prior editorial change</h3>
<p>In N4791 (the post-San-Diego working draft), an editorial change was applied
to repair missing wording in 2018-11 CWG motion 14
(<a href="http://wg21.link/p0595r2">P0595R2 "<code>std::is_constant_evaluated()</code>"</a>).
This change added a definition of the term "usable in constant expressions"
as applied to objects and references that was inadvertently dropped from the
wording during CWG review.</p>
<p>Further review within CWG has shown that the dropped wording is also incorrect,
so the editorial fix has been reverted (leaving the definition absent rather
than incorrect), and a proper definition will be inserted by a core issue.</p>
<h2>Minor editorial fixes</h2>
<p>A log of editorial fixes made to the working draft since N4800 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 <a href="https://github.com/cplusplus/draft/compare/n4800...n4810">draft sources on github</a>.</p>
<pre><code>commit 142acf0bbde8d6fd20cb67c051d896fec33a84b6
Author: stryku <[email protected]>
Date: Thu Oct 11 18:41:18 2018 +0200
[decl.init]/10 Fix specified initialization.
According to [basic.start.static]/2, for objects with static storage duration,
zero initialization performs only if constant initialization does not.
[decl.init]/10 can be generalized to static initialization.
This is an editorial note change.
commit 74def77454a15b6cdb45be0f31916396b4b63b72
Author: Richard Smith <[email protected]>
Date: Fri Mar 15 13:45:06 2019 -0700
[util.smartptr.atomic.shared] [util.smartptr.atomic.weak] Clarify
grouping of "either".
commit 4c5701a79cc7c4cc7b9cd9c6070e3cd88961aca7
Author: Jens Maurer <[email protected]>
Date: Fri Dec 21 21:04:43 2018 +0100
[mismatch] LWG3178 std::mismatch is missing an upper bound
commit 04a5e31a02e19e5d1c9e9a0b05c40ce8730c7064
Author: Jens Maurer <[email protected]>
Date: Sat Jan 26 00:30:13 2019 +0100
[algorithms] Qualify declarator-id with sub-namespace.
Also qualify return types where appropriate.
commit 6c844190a533950fc0100eac4da7785d99c87400
Author: Jens Maurer <[email protected]>
Date: Fri Mar 15 20:25:59 2019 +0100
[time.clock.req] Change 'satisfy' to 'meet'.
commit c3adaef44b94cc63a8a8806f398185046461947c
Author: Jens Maurer <[email protected]>
Date: Fri Mar 15 19:23:30 2019 +0100
[numeric.requirements] Define 'numeric type'.
commit 1ce86a62a3cff9fb2bcf6c1a2c37168e023e338b
Author: Jens Maurer <[email protected]>
Date: Sat Mar 9 22:18:26 2019 +0100
[time.clock.req] Simplify requirements for Cpp17TrivialClock.
commit 0ba5424c1beddfd8c8403ce882b96dee0f530c7f
Author: JF Bastien <[email protected]>
Date: Fri Mar 15 13:52:39 2019 -0700
[basic.fundamental] Rename 'range exponent' to 'width' to align with C
commit 9e00558f2a824421406a6703d1232cc4fb89bb15
Author: Arthur O'Dwyer <[email protected]>
Date: Fri Mar 15 16:43:16 2019 -0400
[std] Fix a bunch of faulty parallelism with "either".
commit 54ddcb970132bfe026c9d9d62d967632b56ae303
Author: BRevzin <[email protected]>
Date: Fri Mar 15 15:30:07 2019 -0500
[class.rel] Simplifying wording to avoid talking about a reversed <=>.
We can never select a reversed <=> here because the operands are of the same type.
commit 5d174b05d8cd08717ed7efc05d0271409651071c
Author: Richard Smith <[email protected]>
Date: Fri Mar 15 12:33:42 2019 -0700
[expr.prim.lambda.capture] Convert paragraphs repeating the
"non-odr-usable local entities shall not be odr-used" rule from
[basic.def.odr] into notes.
commit 41853024e5e6fcd5feb496f64767d2888d76154f
Author: Richard Smith <[email protected]>
Date: Fri Mar 15 11:38:57 2019 -0700
Revert "[expr.const] Add missing definition of 'usable in constant expressions'"
The prior editorial fix was an attempt to re-add wording that was
missing from P0595R2 (moved as 2018-11 CWG Motion 14). However, CWG
analysis has indicated that the editorial fix is incomplete, so we're
reverting it to restore the wording to the as-moved state.
This reverts commit e58439bce8af85e6569328272c2cfb73f5fc44d6.
commit 154f2c59c4377897937f4b0722cfe2b6d726cc59
Author: birbacher <[email protected]>
Date: Fri Mar 15 18:39:16 2019 +0000
[container.node] Add 3 "template" keywords for dependent name (#2676)
On:
[container.node.overview]/4
[container.node.cons]/3.1
[container.node.dtor]/1
commit 2585d7f5894b46e0aa2f961183060a5201b2cca7
Author: Jens Maurer <[email protected]>
Date: Fri Dec 21 19:29:38 2018 +0100
[std] Replace underscores in stable labels with periods.
commit 554a8926404bd5e0f772a6cb72c04bd12a5b7984
Author: Casey Carter <[email protected]>
Date: Mon Mar 4 09:29:50 2019 -0800
[specialized.algorithms] Rename voidify's parameter
`ptr` is an odd name for a parameter that is a reference to storage for an object.
commit a2dfa61a0d50a24e7be6cbc004bb0f076b8c62b5
Author: Jens Maurer <[email protected]>
Date: Fri Mar 8 22:25:38 2019 +0100
[queue.syn,stack.syn] Add partial specialization of uses_allocator
commit 721f2d606f90cc20a16ad9b4383bc78cb368abdc
Author: Jonathan Wakely <[email protected]>
Date: Fri Mar 15 02:53:18 2019 +0000
[func.not_fn], [func.bind_front] fix phrasing of \mandates and \expects (#2750)
The Mandates: element should just state its condition, and not say "shall".
Cpp17 concept requirements should be phrased as "X meets the
Y requirements" not "X shall meet the requirements of Y".
commit 48484c967ee5f3ecb65ff857f8f4794e108ba0cb
Author: Krystian <[email protected]>
Date: Thu Mar 14 22:49:33 2019 -0400
[temp.class.spec.mfunc] Correct "class template specialization" to the intended "class template partial specialization"
commit 3117814eaf800a5e1dd387f4c5a0522f2627689e
Author: languagelawyer <[email protected]>
Date: Fri Mar 15 05:48:28 2019 +0300
[expr.sizeof] Remove the redundant paragraph 3
Paragraph 1 already says that functions are disallowed and function pointers are allowed.
commit c769f835dadd4a35df9febad684a296d6cb71a53
Author: JF Bastien <[email protected]>
Date: Thu Mar 14 19:45:53 2019 -0700
[dcl.attr.contract.cond] Replace return type with 'void' in example that does not return
Also remove the (unused) name for the return value in the postcondition.
commit d48c79e223cfbd5ec134703e20989235208e9364
Author: Jens Maurer <[email protected]>
Date: Fri Mar 8 01:14:16 2019 +0100
[dcl.enum] Fix singular/plural mismatch.
commit c5fb73ba6a9b71f6e247103ab4baac1c9f72e210
Author: Jens Maurer <[email protected]>
Date: Fri Mar 8 01:13:35 2019 +0100
[conv.prom] b_min and b_max are no longer defined in [dcl.enum]
commit d7d2580c7d8fabe25ada4dd0e091f9997c0916f5
Author: Jens Maurer <[email protected]>
Date: Sat Mar 9 22:36:47 2019 +0100
[range.iota,range.adaptors] Add cross-references for private member types.
commit b8fd249c737ff2c3652cf6ef77db25712038d353
Author: Jens Maurer <[email protected]>
Date: Sun Mar 10 20:20:10 2019 +0100
[dcl.init] Prepend 'Otherwise' to a bullet
commit dd227824ade24ab51dd4cc926c4b9e87cc29becf
Author: Jens Maurer <[email protected]>
Date: Sun Mar 10 20:28:41 2019 +0100
[dcl.attr.contract.cond] References cannot be modified.
Avoid confusion caused by using the words "makes [...]
modifications of the value of [a] parameter" by excluding
references.
commit b0116b87bf33fed9648e6e8b1b0c7cee0d90b311
Author: Jason Merrill <[email protected]>
Date: Tue Mar 12 09:06:23 2019 -0400
[over.match.best] Add number for paragraph 2.
commit f0f7ba234644d3690d18fcba73f618648014a47c
Author: Jens Maurer <[email protected]>
Date: Wed Mar 13 22:21:42 2019 +0100
[lib] Use '(inclusive)', not other punctuation
to indicate inclusive ranges in prose.
commit 5ba461ec9836f95ed7a54b563b06d480f564e987
Author: Jens Maurer <[email protected]>
Date: Wed Mar 13 22:46:19 2019 +0100
[class.eq,class.spaceship] Clarify order of comparison.
commit 42e5df5c08c9ef805da304fe05fe387cfc3d33d5
Author: Jens Maurer <[email protected]>
Date: Thu Mar 14 00:02:25 2019 +0100
[basic.lookup.argdep] Reorder bullets to group semantics.
commit 927dc13e1010e031692f3a94d8e9599beeb877ac
Author: Richard Smith <[email protected]>
Date: Thu Mar 14 17:22:07 2019 -0700
[array.tuple] Fix broken description of tuple_element for std::array.
commit 0b06fcd5f92bc0439a868471a5fdfdba8a181941
Author: Jens Maurer <[email protected]>
Date: Fri Mar 8 22:12:14 2019 +0100
[ranges.syn] Add ref_view to header synopsis.
commit 6f6e5772b2a2dcf41e3db4f68b6cbc3c0628c061
Author: Richard Smith <[email protected]>
Date: Thu Mar 14 16:05:33 2019 -0700
[algorithms.parallel.exec] Rephrase to avoid incorrect use of "may not".
Convert rationale sentence to a note.
commit de76c7de8c4f9734e0e4351d2088d4786ee62135
Author: Jens Maurer <[email protected]>
Date: Tue Mar 5 21:57:10 2019 +0100
[char.traits.typedefs] Change 'shall meet' to 'meets'
commit e11e27a7873953f0c078901f7ddbb0d7d701c5f7
Author: Jens Maurer <[email protected]>
Date: Wed Mar 6 21:15:37 2019 +0100
[mem.poly.allocator.mem] Avoid duplicate colons.
commit 2956ba37186d7e9cbe728cc3870a2a26fb1f0168
Author: Richard Smith <[email protected]>
Date: Wed Mar 13 14:14:43 2019 -0700
[dcl.fct.def.coroutine] Update wording to align with current editorial
conventions.
Reorder and rearrange to reduce the number of variables with long scopes
that we define in the wording.
Fix mismatch between core and library wording where library permits
coroutine_handle<void> to resume a coroutine with any promise type, and
the core language does not.
commit 8dd4539b24473677809163f5e6d399ba6aa0b27d
Author: Richard Smith <[email protected]>
Date: Tue Mar 12 18:15:59 2019 -0700
[expr.await] Rephrase and modernize wording.
Invoke temporary materialization conversion directly rather than
handwaving about a temporary object. Specify that the o expression is
evaluated. Bulletize description of the three different ways that
await-suspend is called.
Fix wording that uses values and objects on the left-hand side of a
class member access to instead consistently use expressions.
Fixes #2774.
commit d69814f61077f7e549ccc39a21fc3b90db4223d6
Author: Richard Smith <[email protected]>
Date: Mon Mar 11 20:12:17 2019 -0700
[temp.param] "a type that is literal" -> "a literal type".
commit c0058816fdfe079095ca8717ad692dc2d498d6a3
Author: Richard Smith <[email protected]>
Date: Mon Mar 11 20:11:46 2019 -0700
[class.eq] Remove redundant repetition of the operator== symmetry rule.
commit 007c0c1a619417f94c2c4efb57be71c09f2c2870
Author: Jens Maurer <[email protected]>
Date: Wed Mar 6 21:32:09 2019 +0100
[temp.type] Do not refer to operator==, which excludes built-in ==.
commit caa5c8aedecdf68cfda4f5d95ec9d20451953117
Author: Jens Maurer <[email protected]>
Date: Tue Mar 5 19:05:25 2019 +0100
[class.compare.default] Add a note that friends are found by ADL only.
commit c9074b533c835bbf820f5ea09957810ed2c04dab
Author: Jens Maurer <[email protected]>
Date: Wed Mar 6 20:56:58 2019 +0100
[expr.new] Move treatment of arrays of unknown bound
commit ce2f08ab94123adb44e58f1176c6ae4f3209eb60
Author: Richard Smith <[email protected]>
Date: Mon Mar 11 17:20:25 2019 -0700
[dcl.init] Merge new direct aggregate init wording into class direct
initialization bullet to avoid the wording being unreachable due to an
"Otherwise" chain.
commit 691b7c10530d3265afbf445dff3dd129c7c5692e
Author: Dawn Perchik <[email protected]>
Date: Sun Mar 10 16:15:53 2019 -0700
[dcl.init] Moved the changed bullet in 17.5 to before 17.6.3.
commit 5f7461d24bc0e9867458a043adf04aa8c4ceed73
Author: Richard Smith <[email protected]>
Date: Fri Mar 8 16:11:34 2019 -0800
[temp.dep.type] Rephrase to avoid suggesting that an expression can be
the current instantiation.
A type can't be the current instantiation either, but that's a
pre-existing prevalent problem.
commit cbb21fb0210b6aade5591de94e3a27d7059e9d06
Author: Richard Smith <[email protected]>
Date: Fri Mar 8 16:08:02 2019 -0800
[basic.def.odr] Apply additional edits from CWG review that were not
transcribed into P1359R0.
commit ac732bfe4eef01e9e2443dac6138270695d7cbf9
Author: Richard Smith <[email protected]>
Date: Fri Mar 8 12:24:49 2019 -0800
[expr.prim.lambda.capture] Add missing close parentheses in CWG2358
examples.
Fixes #2680.
commit 502e419ca75c9656394d1998036b4b810e8bdb17
Author: Richard Smith <[email protected]>
Date: Fri Mar 8 12:00:26 2019 -0800
[dcl.type.simple] Fix inaccurate note added by CWG2332
[temp.local] Clarify that the surrounding syntax and construct directly
dictates whether an injected-class-name is syntactically a template-name
or a type-name, not just what it means.
commit f4346ece403e469e800d635a75baafb9c411aa1b
Author: Richard Smith <[email protected]>
Date: Fri Mar 8 11:39:36 2019 -0800
[expr.static.cast] Fix wording of CWG2310 to match CWG intent (verified
on core reflector):
- in p11, require D to be a complete class type, not B
- in p12, rephrase to avoid the suggestion that we're talking about a
different D than the one already in scope
commit 6f34b0513ed6d974b86a27429f8f4d02a6c18b88
Author: Hana Dusíková <[email protected]>
Date: Fri Feb 22 11:03:29 2019 -1000
[pair.astuple, tuple.helper] Fix inconsistent class key in tuple_size/tuple_element. (#2679)
It was declared as a struct and specializations were classes.
commit 102a791b446f70f939a9b1e2e66fc3553aade19c
Author: Johel Ernesto Guerrero Peña <[email protected]>
Date: Fri Feb 22 02:30:23 2019 -0400
[array.syn] Add reference to [array.tuple]
commit 7fe655909b4e5f01d8a8b71d6b508785c42c739e
Author: Richard Smith <[email protected]>
Date: Wed Feb 20 17:04:55 2019 -1000
[temp.dep] [temp.dep.res] Remove redundant restatement of the two-phase
lookup rule. The primary location of the rule is [temp.dep.candidate].
commit 8fbeb52ae5daccc0352798ff023f6cba6aebcd42
Author: Richard Smith <[email protected]>
Date: Mon Feb 18 17:15:39 2019 -1000
[basic.link] The notion of the linkage of a type is no longer used for
any purpose. Remove it and move its example next to the rule that
justifies it, and simplify said example.
commit cafdbd8036f3cf19e9cfc2f56584b219fb190602
Author: languagelawyer <[email protected]>
Date: Fri Jan 25 00:12:44 2019 +0300
[expr.sizeof]/2: there are no expressions of reference type
commit 35ce0ae2eb2582dbc00fc824afbfa1d53a64de8d
Author: Richard Smith <[email protected]>
Date: Wed Feb 13 17:51:58 2019 -0800
[depr.array.comp] Fix example of deprecated array comparison
commit 2f0bd979f41953890129fcbdc6ef37e3e90387ad
Author: Alisdair Meredith <[email protected]>
Date: Sun Feb 10 16:53:15 2019 -0500
Add missing noexcept cross-refs for invokable traits (#2662)
All the other traits that use the phrase 'is known not to throw exceptions' also cross-reference the core clause for the noexcept operator, so add the missing cross reference to the more recently added traits.
commit 9f261368736c3666791329145292c1563a291861
Author: Alberto Barbati <[email protected]>
Date: Sun Feb 10 22:52:36 2019 +0100
[temp.mem.func] Fixed text in example, which was not updated by CWG 249 (#2658)
commit f668df034ebf27ad53b5addad22af4f1293f829f
Author: Jens Maurer <[email protected]>
Date: Sun Feb 10 22:50:42 2019 +0100
[algorithms.general,concepts.general] Add missing entries for summary tables (#2663)
</code></pre>