-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrss.xml
More file actions
1441 lines (1265 loc) · 109 KB
/
Copy pathrss.xml
File metadata and controls
1441 lines (1265 loc) · 109 KB
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
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>cpprefjp - C++日本語リファレンス</title>
<link href="https://cpprefjp.github.io" />
<updated>2026-08-26T04:03:31.427944</updated>
<id>0d031bdd-db60-4f87-bab4-b89aa92eea3d</id>
<entry>
<title>C++国際標準規格 -- Working Draftは特定のpaperへのリンクではなくcppwpにリンクする #1743</title>
<link href="https://cpprefjp.github.io/international-standard.html"/>
<id>4ed0f6f643ef365a5c4c32e775040448f4573110:international-standard.md</id>
<updated>2026-08-26T13:01:17+09:00</updated>
<content type="html"><h1 itemprop="name"><span class="token">C++国際標準規格</span></h1>
<div itemprop="articleBody"><h2><a href="#summary" id="summary">概要</a></h2>
<p>C++ の標準規格の実例として ISO/IEC による<strong>国際標準規格</strong> (international standard) がある。
最新の国際標準規格は「ISO/IEC 14882:2024 Programming Languages -- C++」(通称 C++23) である。
C++ の標準規格は、他にも各国の規格化団体によって国際標準規格に等価なものが定められている。
日本では日本工業標準調査会 (JISC) により「JIS X 3014:2003 プログラム言語C++」が定められているが古い (C++03 相当)。
ここでは特に国際標準規格について取り扱う。</p>
<h2><a href="#list-of-iso-cpp" id="list-of-iso-cpp">国際標準規格の一覧</a></h2>
<table border="1" bordercolor="#888" style="border-collapse:collapse">
<thead>
<tr>
<th style="text-align: left;">通称<sup><a href="#note-t1-1" id="note_ref-t1-1">†1</a></sup></th>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">参照する規格案<sup><a href="#note-t1-2" id="note_ref-t1-2">†2</a></sup></th>
<th style="text-align: left;">規格案・原案</th>
<th style="text-align: left;"><code>__cplusplus</code></th>
<th style="text-align: left;">引用規格<sup><a href="#note-t1-6" id="note_ref-t1-6">†6</a></sup></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><a href="lang/cpp29.html">C++29</a> (C++2d)</td>
<td style="text-align: left;">ISO/IEC 14882:2029 (予定)</td>
<td style="text-align: left;">N5054(<a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/n5054.pdf" target="_blank">PDF</a>)/<a href="https://timsong-cpp.github.io/cppwp/" target="_blank">HTML</a></td>
<td style="text-align: left;">N5054 N5050</td>
<td style="text-align: left;">--</td>
<td style="text-align: left;">C23, POSIX.1-2017<br />Unicode 15.1</td>
</tr>
<tr>
<td style="text-align: left;"><a href="lang/cpp26.html">C++26</a> (C++2c)</td>
<td style="text-align: left;">ISO/IEC 14882:2026 (予定)</td>
<td style="text-align: left;">N5050(<a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/n5050.pdf" target="_blank">PDF</a>/<a href="https://timsong-cpp.github.io/cppwp/n5050/" target="_blank">HTML</a>)</td>
<td style="text-align: left;">N5050 N5046 N5032 N5014 N5008 N5001 N4993<br />N4986 N4981 N4971 N4964 N4958</td>
<td style="text-align: left;"><code>202603L</code></td>
<td style="text-align: left;">C23, POSIX.1-2017<br />Unicode 15.1</td>
</tr>
<tr>
<td style="text-align: left;"><a href="lang/cpp23.html">C++23</a> (C++2b)</td>
<td style="text-align: left;">ISO/IEC 14882:2024</td>
<td style="text-align: left;">N4950(<a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/n4950.pdf" target="_blank">PDF</a>/<a href="https://timsong-cpp.github.io/cppwp/n4950/" target="_blank">HTML</a>)</td>
<td style="text-align: left;">N4950 N4944 N4928 N4917 N4910<br />N4901 N4892 N4885 N4878 N4868<br />N4861</td>
<td style="text-align: left;"><code>202302L</code></td>
<td style="text-align: left;">C17, POSIX.1-2017,<br />Unicode latest</td>
</tr>
<tr>
<td style="text-align: left;"><a href="lang/cpp20.html">C++20</a> (C++2a)</td>
<td style="text-align: left;">ISO/IEC 14882:2020</td>
<td style="text-align: left;">N4861<sup><a href="#note-t1-3" id="note_ref-t1-3">†3</a></sup>(<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/n4861.pdf" target="_blank">PDF</a>/<a href="https://timsong-cpp.github.io/cppwp/n4861/" target="_blank">HTML</a>)</td>
<td style="text-align: left;">N4860 N4849 N4842 N4835 N4830<br />N4820 N4810 N4800 N4791 <del>N4788</del><sup><a href="#note-t1-4" id="note_ref-t1-4">†4</a></sup><br />N4778 N4762 N4750 N4741 N4727<br />N4713 N4700 N4687</td>
<td style="text-align: left;"><code>202002L</code></td>
<td style="text-align: left;">C17, POSIX.1-2003,<br />UCS:1993, UCS:latest, UAX#29-35</td>
</tr>
<tr>
<td style="text-align: left;"><a href="lang/cpp17.html">C++17</a> (C++1z)</td>
<td style="text-align: left;">ISO/IEC 14882:2017</td>
<td style="text-align: left;">N4659(<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf" target="_blank">PDF</a>/<a href="https://timsong-cpp.github.io/cppwp/n4659/" target="_blank">HTML</a>)</td>
<td style="text-align: left;">N4660 N4659 N4640 N4618 N4606<br />N4594 N4582 N4567 N4527 N4431<br />N4296</td>
<td style="text-align: left;"><code>201703L</code></td>
<td style="text-align: left;">C11:TC1, POSIX.1-2003,<br />UCS:1993</td>
</tr>
<tr>
<td style="text-align: left;"><a href="lang/cpp14.html">C++14</a> (C++1y)</td>
<td style="text-align: left;">ISO/IEC 14882:2014</td>
<td style="text-align: left;">N4140(<a href="https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf?raw=true" target="_blank">PDF</a>/<a href="https://timsong-cpp.github.io/cppwp/n4140/" target="_blank">HTML</a>)</td>
<td style="text-align: left;">N4141 N4140 N3937 N3936 N3797<br />N3691 N3690 N3485 N3376 N3337</td>
<td style="text-align: left;"><code>201402L</code></td>
<td style="text-align: left;">C99:TC3, POSIX.1-2003,<br />UCS:1993</td>
</tr>
<tr>
<td style="text-align: left;"><a href="lang/cpp11.html">C++11</a> (C++0x)</td>
<td style="text-align: left;">ISO/IEC 14882:2011</td>
<td style="text-align: left;">N3337<sup><a href="#note-t1-5" id="note_ref-t1-5">†5</a></sup>(<a href="https://wg21.link/std11" target="_blank">PDF</a>/<a href="https://timsong-cpp.github.io/cppwp/n3337/" target="_blank">HTML</a>)</td>
<td style="text-align: left;">N3291 N3290 N3242 N3225 N3126<br />N3090 N3035 N3000 N2960 N2914<br />N2857 N2798 N2723 N2691 N2606<br />N2588 N2521 N2461 N2369 N2315<br />N2284 N2134 N2009 N1905 N1804<br />N1733 N1655 N1638</td>
<td style="text-align: left;"><code>201103L</code></td>
<td style="text-align: left;">C99:TC3, POSIX.1-2003,<br />UCS:1993</td>
</tr>
<tr>
<td style="text-align: left;">C++03</td>
<td style="text-align: left;">ISO/IEC 14882:2003</td>
<td style="text-align: left;">N1577</td>
<td style="text-align: left;">N1577 N1344 N1316</td>
<td style="text-align: left;"><code>199711L</code><br />(C++98 と同じ)</td>
<td style="text-align: left;">C99,<br />UCS:2000</td>
</tr>
<tr>
<td style="text-align: left;">C++98</td>
<td style="text-align: left;">ISO/IEC 14882:1998</td>
<td style="text-align: left;">N1146(<a href="https://open-std.org/jtc1/sc22/wg21/docs/wp/pdf/nov97-2/" target="_blank">複数PDF</a>)</td>
<td style="text-align: left;">N1146 N1117 N1037 N0996 N0926<br />N0836 N0785 N0691 N0687 N0629<br />... N0048 N0008</td>
<td style="text-align: left;"><code>199711L</code></td>
<td style="text-align: left;">C95,<br />UCS:1993</td>
</tr>
</tbody>
</table>
<ol>
<li><a href="#note_ref-t1-1" id="note-t1-1"><strong>^</strong></a> カッコ内は策定時・標準化前に一時的に用いられた通称</li>
<li><a href="#note_ref-t1-2" id="note-t1-2"><strong>^</strong></a> 最終国際規格案はPDFやHTMLなどの形で一般公開されていないため、それにほぼ同一の内容の規格案を参照する。</li>
<li><a href="#note_ref-t1-3" id="note-t1-3"><strong>^</strong></a> N4861 は、C++20 DISであるN4860に対するデザインレベルの差とC++17との相互参照がない以外の差はないため、事実上 N4861 が C++20 を参照する時に用いられる。</li>
<li><a href="#note_ref-t1-4" id="note-t1-4"><strong>^</strong></a> N4788 は政治的事情により撤回された (参照 N4792)</li>
<li><a href="#note_ref-t1-5" id="note-t1-5"><strong>^</strong></a> N3337 は、C++11規格に対する編集レベルの修正のみが適用された仕様案であるため、事実上 N3337 が C++11 を参照する時に用いられる。C++11規格からN3337への変更点は、<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3338.html" target="_blank">N3338</a>を参照。<br />
(それより前の公開されているC++11向け仕様案であるN3242からC++11規格に対しては、機能的な変更がいくつかあるため、C++11規格として参照するには適さない)</li>
<li><a href="#note_ref-t1-6" id="note-t1-6"><strong>^</strong></a> 全ての<strong>引用規格</strong> (normative references) を載せているわけではない。特に引用規格のバージョン差異が重要なものを表中に載せている。<ul>
<li>C規格に関しては<a href="#list-of-iso-c">下の表</a>も参照のこと。
ここでは C99:TC3 などの表記は C99 に加えて TC1 から TC3 までを取り入れたものを指すこととする。</li>
<li>POSIX規格については POSIX.1-2003 は ISO/IEC 9945:2003 (POSIX.1-2001 + TC1) で、
POSIX.1-2017 は ISO/IEC/IEEE 9945:2009 に TC1 (ISO/IEC/IEEE 9945:2009/Cor 1:2013) と TC2 (ISO/IEC/IEEE 9945:2009/Cor 2:2017) を取り入れたものである。
長らく POSIX.1-2003 が参照されて来たが C++23 から POSIX.1-2017 を参照する様に変更された[<a href="lang/cpp23/update_normative_reference_to_posix.html">P2227R0</a>]。</li>
<li>国際符号化文字集合 (UCS; Universal Coded Character Set) / Unicode については、
UCS は ISO/IEC 10646 の総称であり、ここでは UCS:1993 は ISO/IEC 10646-1:1993、UCS:2000 は ISO/IEC 10646-1:2000 を指すこととする。
また UAX#29-35 は Unicode 12.0 の Unicode Standard Annex UAX #29 (revision 35) を指すこととする。
引用規格として長らく UCS:1993 が参照されてきたが、
C++20 で UCS (最新) への参照が追加され [<a href="lang/cpp20/update_the_reference_to_the_unicode_standard.html">P1025R1</a>]、
C++23 で Unicode (最新) に切り替えられ [P2736R2(<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2736r2.pdf" target="_blank">PDF</a>)]、
C++26 で Unicode 15.1 に切り替えられた [<a href="https://cplusplus.github.io/CWG/issues/2843.html" target="_blank">CWG 2843</a>]。</li>
<li>C++11 以降は <code>&lt;regex&gt;</code> のために ECMAScript ECMA-262:1999 を引用する。</li>
<li>他に基本語彙・日時・浮動小数点数・数学記号などのために他の規格を引用する。</li>
</ul>
</li>
</ol>
<p>最新の原案のHTML版は以下で公開されている。<br />
<a href="https://timsong-cpp.github.io/cppwp/" target="_blank">Draft C++ Standard: Contents</a></p>
<p>標準規格の原案はLaTeXで書かれており、そのソースコードは以下で2011年8月16日以降のものについて(つまりN3291より後、N3337より前)公開されている。<br />
<a href="https://github.com/cplusplus/draft" target="_blank">cplusplus/draft: C++ standards drafts</a></p>
<h2><a href="#list-of-iso-c" id="list-of-iso-c">C国際標準規格の一覧</a></h2>
<p>以下、主な C 国際標準規格と C++ が参照する技術的正誤票 (TC) の一覧である。</p>
<table border="1" bordercolor="#888" style="border-collapse:collapse">
<thead>
<tr>
<th style="text-align: left;">通称</th>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">参照する規格案</th>
<th style="text-align: left;"><code>__STDC_VERSION__</code></th>
<th style="text-align: left;">引用元C++</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">C29 (C2Y)</td>
<td style="text-align: left;">ISO/IEC 9899:2029 (予定)</td>
<td style="text-align: left;">N3886(<a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3886.pdf" target="_blank">PDF</a>) (暫定)</td>
<td style="text-align: left;">?</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;"><strong>C23</strong> (C2X)</td>
<td style="text-align: left;">ISO/IEC 9899:2024</td>
<td style="text-align: left;">N3096(<a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf" target="_blank">PDF</a>)</td>
<td style="text-align: left;"><code>202311L</code></td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;"><strong>C17</strong> (C18)</td>
<td style="text-align: left;">ISO/IEC 9899:2018</td>
<td style="text-align: left;">N2176</td>
<td style="text-align: left;"><code>201710L</code></td>
<td style="text-align: left;">C++20, C++23</td>
</tr>
<tr>
<td style="text-align: left;">C11 TC1</td>
<td style="text-align: left;">ISO/IEC 9899:2011/Cor 1:2012</td>
<td style="text-align: left;">?</td>
<td style="text-align: left;"><code>201112L</code></td>
<td style="text-align: left;">C++17</td>
</tr>
<tr>
<td style="text-align: left;"><strong>C11</strong> (C1X)</td>
<td style="text-align: left;">ISO/IEC 9899:2011</td>
<td style="text-align: left;">N1570(<a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf" target="_blank">PDF</a>)</td>
<td style="text-align: left;"><code>201112L</code></td>
<td style="text-align: left;">C++17</td>
</tr>
<tr>
<td style="text-align: left;">C99 TC3</td>
<td style="text-align: left;">ISO/IEC 9899:1999/Cor.3:2007</td>
<td style="text-align: left;">N1256(<a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf" target="_blank">PDF</a>)</td>
<td style="text-align: left;"><code>199901L</code></td>
<td style="text-align: left;">C++11, C++14</td>
</tr>
<tr>
<td style="text-align: left;">C99 TC2</td>
<td style="text-align: left;">ISO/IEC 9899:1999/Cor.2:2004</td>
<td style="text-align: left;">N1124(<a href="https://open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf" target="_blank">PDF</a>)</td>
<td style="text-align: left;"><code>199901L</code></td>
<td style="text-align: left;">C++11, C++14</td>
</tr>
<tr>
<td style="text-align: left;">C99 TC1</td>
<td style="text-align: left;">ISO/IEC 9899:1999/Cor.1:2001</td>
<td style="text-align: left;">?</td>
<td style="text-align: left;"><code>199901L</code></td>
<td style="text-align: left;">C++11, C++14</td>
</tr>
<tr>
<td style="text-align: left;"><strong>C99</strong> (C9X)</td>
<td style="text-align: left;">ISO/IEC 9899:1999</td>
<td style="text-align: left;">N843(<a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n843.htm" target="_blank">HTML</a>)</td>
<td style="text-align: left;"><code>199901L</code></td>
<td style="text-align: left;">C++03, C++11, C++14</td>
</tr>
<tr>
<td style="text-align: left;">C95</td>
<td style="text-align: left;">ISO/IEC 9899/Amd.1:1995</td>
<td style="text-align: left;">?</td>
<td style="text-align: left;"><code>199409L</code></td>
<td style="text-align: left;">C++98</td>
</tr>
<tr>
<td style="text-align: left;"><strong>C90</strong></td>
<td style="text-align: left;">ISO/IEC 9899:1990</td>
<td style="text-align: left;">?</td>
<td style="text-align: left;">--</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;"><strong>C89</strong></td>
<td style="text-align: left;">ANSI X3.159-1989</td>
<td style="text-align: left;">?</td>
<td style="text-align: left;">--</td>
<td style="text-align: left;"></td>
</tr>
</tbody>
</table>
<h2><a href="#iso-cpp-committee" id="iso-cpp-committee">用語: 国際標準規格を定める組織</a></h2>
<ul>
<li><strong>C++標準化委員会</strong> (C++ Standards Committee): C++ の国際標準規格を策定する団体。
組織としての位置づけはISO/IEC JTC1/SC22/WG21になる。
<strong>国際標準化機構</strong> (ISO; international organization for standardization) および<strong>国際電気標準会議</strong> (IEC; International Electrotechnical Commission) はそれぞれ様々な規格の標準化団体である。
<strong>第一合同技術委員会</strong> (JTC1; Joint Technical Committee 1) は ISO/IEC の下で情報技術の標準化を行う団体である。
下部組織の SC22 はプログラム言語の標準化を行う<strong>副委員会</strong> (SC; subcommittee) である。
C++標準化委員会は <strong>WG21</strong> という<strong>作業グループ</strong> (WG; working group) である。</li>
<li><strong>C標準化委員会</strong> (C Standards Committee): C言語の国際標準規格を策定する団体。
C++標準化委員会と同じく ISO/IEC JTC1/SC22 の下に属する作業グループで、<strong>WG14</strong>になる。</li>
<li><strong>CWG</strong> (Core working group): C++標準化委員会の内、コア言語機能の策定を行う作業グループ</li>
<li><strong>LWG</strong> (Library working group): C++標準化委員会の内、標準ライブラリ機能の策定を行う作業グループ</li>
<li><strong>NB</strong> (national body) または<strong>MB/NC</strong> (member body/national committee): C++標準化委員会の正会員つまり各国から派遣される団体のこと。本来は member body は ISO での名称で、national committee は IEC での名称。</li>
</ul>
<h2><a href="#iso-cpp-documents" id="iso-cpp-documents">用語: 国際標準規格の文書</a></h2>
<ul>
<li><strong>提案文書</strong> (proposal paper): 標準規格の変更についての提案文書</li>
<li><strong>問題</strong> (issue): C++標準規格の問題や課題のこと</li>
<li><strong>欠陥</strong> (defect): C++標準規格に含まれるいわば "バグ" のこと<ul>
<li><strong>DR</strong> (defect report, defect resolution): 委員会で承認された欠陥の報告または欠陥の修正のこと</li>
<li><strong>NAD</strong> (not a defect): 委員会により標準規格の欠陥ではないとされた問題のこと</li>
<li><strong>DRWP</strong>: 最新の規格原案に取り込み済みの DR のこと</li>
</ul>
</li>
<li><strong>WD</strong> (working draft): 作業原案</li>
<li><strong>CD</strong> (committee draft): 委員会原案</li>
<li><strong>FCD</strong> (final committee draft): 最終委員会原案</li>
<li><strong>DIS</strong> (draft international standard): 国際規格案</li>
<li><strong>FDIS</strong> (final draft international standard): 最終国際規格案</li>
<li><strong>IS</strong> (international standard): 国際規格</li>
<li><strong>TC</strong> (technical corrigendum): 技術的正誤票。用例: TC1</li>
<li><strong>TR</strong> (technical report): 技術報告書。用例: TR1</li>
<li><strong>TS</strong> (technical specifications): 技術仕様書。用例: Concepts TS</li>
</ul>
<h2>参照</h2>
<ul>
<li>標準規格<ul>
<li><a href="https://www.iso.org/standard/83626.html" target="_blank">ISO/IEC 14882:2024 - Programming languages — C++</a></li>
<li><a href="https://www.iso.org/standard/79358.html" target="_blank">ISO/IEC 14882:2020 - Programming languages — C++</a></li>
<li><a href="https://www.iso.org/standard/68564.html" target="_blank">ISO/IEC 14882:2017 - Programming languages -- C++</a></li>
<li><a href="https://www.iso.org/standard/64029.html" target="_blank">ISO/IEC 14882:2014 - Information technology -- Programming languages -- C++</a></li>
<li><a href="https://www.iso.org/standard/50372.html" target="_blank">ISO/IEC 14882:2011 - Information technology -- Programming languages -- C++</a></li>
<li><a href="https://www.iso.org/standard/38110.html" target="_blank">ISO/IEC 14882:2003 - Programming languages -- C++</a></li>
<li><a href="https://www.iso.org/standard/25845.html" target="_blank">ISO/IEC 14882:1998 - Programming languages -- C++</a></li>
<li><a href="https://webdesk.jsa.or.jp/books/W11M0090/index/?bunsyo_id=JIS%20X%203014:2003" target="_blank">JIS X 3014:2003 プログラム言語C++/Information Technology -- Programming languages -- C++ 日本規格協会 JSA Webdesk</a></li>
</ul>
</li>
<li><a href="http://en.cppreference.com/w/cpp/experimental" target="_blank">Experimental C++ Features - cppreference.com</a></li>
<li><a href="https://stackoverflow.com/questions/29115656/which-draft-is-closest-to-the-c14-standard" target="_blank">c++ - Which draft is closest to the C++14 standard? - Stack Overflow</a></li>
<li><a href="https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents" target="_blank">Where do I find the current C or C++ standard documents? - Stack Overflow</a></li>
<li><a href="https://stackoverflow.com/questions/11053960/how-are-the-cplusplus-directive-defined-in-various-compilers" target="_blank">c++ - How are the __cplusplus directive defined in various compilers? - Stack Overflow</a></li>
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/" target="_blank">ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP</a></li>
<li><a href="https://ja.wikipedia.org/wiki/%E5%9B%BD%E9%9A%9B%E6%A8%99%E6%BA%96%E5%8C%96%E6%A9%9F%E6%A7%8B" target="_blank">国際標準化機構 - Wikipedia</a></li>
<li><a href="https://ja.wikipedia.org/wiki/%E5%9B%BD%E9%9A%9B%E9%9B%BB%E6%B0%97%E6%A8%99%E6%BA%96%E4%BC%9A%E8%AD%B0" target="_blank">国際電気標準会議 - Wikipedia</a></li>
<li><a href="https://ja.wikipedia.org/wiki/ISO/IEC_JTC_1" target="_blank">ISO/IEC JTC 1 - Wikipedia</a></li>
<li><a href="https://ja.wikipedia.org/wiki/ISO/IEC_JTC_1/SC_22" target="_blank">ISO/IEC JTC 1/SC 22 - Wikipedia</a></li>
</ul></div></content>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>constexpr [N2235] -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/lang/cpp11/constexpr.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:lang/cpp11/constexpr.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/lang/cpp11/constexpr.md b/lang/cpp11/constexpr.md
index 8be218388..1220f6bc3 100644
--- a/lang/cpp11/constexpr.md
+++ b/lang/cpp11/constexpr.md
@@ -131,6 +131,12 @@ constexpr int f(bool b)
## 備考
+### 標準ライブラリ関数への`constexpr`指定
+標準ライブラリの関数に`constexpr`が付くかどうかは、規格が明示的に要求している場合に限られる。処理系が独自の判断で、規格が要求していない標準ライブラリ関数のシグニチャに`constexpr`を付けることは許可されていない。
+
+これは、ある処理系では定数式で使えるが別の処理系では使えない、といった移植性の問題を防ぐためである。
+
+
### 浮動小数点数演算での注意
`constexpr`関数での浮動小数点数は、コンパイル時に実行するとコンパイル環境で計算が行われ、実行時に実行すると実行環境で計算が行われる。これによって、コンパイル時と実行時で、結果が異なる可能性がある。
@@ -234,3 +240,5 @@ GCC 5.2、Clang 3.7、Visual C++ 2015時点で、3つともデフォルトは512
- リテラル型のメンバ変数のみを持つクラスは、`constexpr`コンストラクタを明示的に定義しなくても、リテラル型となる
- [CWG Issue 699. Must constexpr member functions be defined in the class member-specification?](http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#699)
- ゼロ割りの扱い、再帰回数の規定
+- [LWG Issue 2013. Do library implementers have the freedom to add `constexpr`?](https://cplusplus.github.io/LWG/issue2013)
+ - C++14で、処理系が規格の要求を超えて標準ライブラリ関数に`constexpr`を付けることは許可されないと規定された。処理系ごとに定数式で使える関数が異なると、移植性のあるプログラムを書けなくなるため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>nth_element -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/algorithm/nth_element.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/algorithm/nth_element.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/algorithm/nth_element.md b/reference/algorithm/nth_element.md
index 603660c3a..e3991f424 100644
--- a/reference/algorithm/nth_element.md
+++ b/reference/algorithm/nth_element.md
@@ -55,7 +55,7 @@ namespace std {
## 効果
-`nth_element()` を呼び出した後、`nth` が指している位置の要素は、全ての範囲がソートされた場合の位置にある要素になる。そして、`[first,nth)` にあるイテレータ `i` と、`[nth,last)` にあるイテレータ `j` について、`!(*j &lt; *i)` または `comp(*j, *i) == false` になる。
+`nth_element()` を呼び出した後、`nth` が指している位置の要素は、全ての範囲がソートされた場合の位置にある要素になる。ただし`nth == last`である場合、この規定は適用されない。そして、`[first,nth)` にあるイテレータ `i` と、`[nth,last)` にあるイテレータ `j` について、`!(*j &lt; *i)` または `comp(*j, *i) == false` になる。
## 戻り値
@@ -109,5 +109,8 @@ int main()
- [LWG Issue 2163. `nth_element` requires inconsistent post-conditions](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2163)
- C++11まで、この関数を呼び出したあとの状態について「`!(*i &gt; *j)`」と記載していたが、並べ替えには`operator&lt;()`を使用するので、C++14で「`!(*j &lt; *i)`」に訂正。
- [LWG Issue 2150. Unclear specification of `find_end`](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2150)
+- [LWG Issue 2339. Wording issue in `nth_element`](https://cplusplus.github.io/LWG/issue2339)
+ - C++14で、`nth == last`の場合には`nth`が指す位置の要素についての規定が適用されないことが明確化された
+ - この修正は欠陥報告(DR)であり、C++98以降に遡及して適用される。`nth == last`は終端イテレータであり指す要素が存在しないため、元の規定はそもそも意味を成さず、処理系は当初から現在の動作を採っていたため
- [P0574R1 Algorithm Complexity Constraints and Parallel Overloads](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0574r1.html)
- [P0879R0 Constexpr for `swap` and `swap` related functions](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html)
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>partition_copy -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/algorithm/partition_copy.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/algorithm/partition_copy.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/algorithm/partition_copy.md b/reference/algorithm/partition_copy.md
index 0b7bd9602..edc52c96b 100644
--- a/reference/algorithm/partition_copy.md
+++ b/reference/algorithm/partition_copy.md
@@ -50,7 +50,7 @@ namespace std {
## テンプレートパラメータ制約
-- `InputIterator` の value type は `Assignable` で、`out_true` と `out_false` の `OutputIterator` へ書き込み可能で、`Predicate` の引数型へ変換可能であること
+- `InputIterator` の value type は `CopyAssignable` で、`out_true` と `out_false` の `OutputIterator` へ書き込み可能で、`Predicate` の引数型へ変換可能であること
## 事前条件
@@ -134,5 +134,8 @@ odds : 1,3,5,
- [N2666 More STL algorithms (revision 2)](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2666.pdf)
- [P0202R3 Add Constexpr Modifiers to Functions in `&lt;algorithm&gt;` and `&lt;utility&gt;` Headers](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html)
- [P0467R2 Iterator Concerns for Parallel Algorithms](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0467r2.html)
+- [LWG Issue 2357. Remaining &#34;Assignable&#34; requirement](https://cplusplus.github.io/LWG/issue2357)
+ - C++14で、要件の名前が、C++98から使われていた`Assignable`から`CopyAssignable`へ改められた
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。C++11で名前付き要件を改名した際に本関数への適用が漏れた編集上の誤りの修正であり、要件の内容そのものは変わらないため
- [LWG Issue 4465. §[alg.partitions] Clarify _Returns:_ element](https://cplusplus.github.io/LWG/issue4465)
- C++26で、戻り値の`pair`が、それぞれ`out_true`/`out_false`の各出力範囲へコピーされた最後の要素の次を指すイテレータであることが明確化された
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>atomic_thread_fence -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/atomic/atomic_thread_fence.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/atomic/atomic_thread_fence.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/atomic/atomic_thread_fence.md b/reference/atomic/atomic_thread_fence.md
index 517da4ea6..3c30ea194 100644
--- a/reference/atomic/atomic_thread_fence.md
+++ b/reference/atomic/atomic_thread_fence.md
@@ -96,6 +96,13 @@ assert(i == 1 || j == 1); // すなわち、i と j が共に0となることは
投げない
+## 備考
+- アトミックオブジェクト`M`に対するアトミック変更`A`・`B`について、以下のいずれかが成り立つ場合、`B`は`M`の変更順序において`A`よりも後に発生する。ここで`S`は[`memory_order_seq_cst`](memory_order.md)操作の全順序である。
+ - `A`が[`memory_order_seq_cst`](memory_order.md)フェンス`X`よりも前に順序付けられており、かつ`X`が`S`において`B`に先行する
+ - [`memory_order_seq_cst`](memory_order.md)フェンス`Y`が`B`よりも前に順序付けられており、かつ`A`が`S`において`Y`に先行する
+ - [`memory_order_seq_cst`](memory_order.md)フェンス`X`・`Y`が存在し、`A`が`X`よりも前に、`Y`が`B`よりも前に順序付けられており、かつ`X`が`S`において`Y`に先行する
+
+
## 例
```cpp example
#include &lt;iostream&gt;
@@ -148,6 +155,9 @@ int main()
## 参照
- [Implementing Dekker&#39;s algorithm with Fences](https://www.justsoftwaresolutions.co.uk/threading/implementing_dekkers_algorithm_with_fences.html)
+- [LWG Issue 2130. Missing ordering constraints](https://cplusplus.github.io/LWG/issue2130)
+ - C++14で、[`memory_order_seq_cst`](memory_order.md)フェンスによる変更順序の制約が整理され、フェンスが片側にのみ存在する場合についても順序が規定された
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。元の規定は両側にフェンスがある場合しか扱っておらず、フェンスと[`memory_order_seq_cst`](memory_order.md)操作を混在させたときの順序が規定から抜けていた記載漏れの補完であるため
- [P3309R3 `constexpr atomic` and `atomic_ref`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3309r3.html)
- C++26で`constexpr`に対応した
- [P3475R2 Defang and deprecate memory_order::consume](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3475r2.pdf)
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>codecvt_utf16 -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/codecvt/codecvt_utf16.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/codecvt/codecvt_utf16.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/codecvt/codecvt_utf16.md b/reference/codecvt/codecvt_utf16.md
index eca7d2904..8f2708639 100644
--- a/reference/codecvt/codecvt_utf16.md
+++ b/reference/codecvt/codecvt_utf16.md
@@ -11,11 +11,14 @@ namespace std {
template &lt;class Elem, unsigned long Maxcode = 0x10ffff,
codecvt_mode Mode = (codecvt_mode)0&gt;
class codecvt_utf16 : public codecvt&lt;Elem, char, mbstate_t&gt; {
- // 未規定...
+ public:
+ explicit codecvt_utf16(size_t refs = 0);
+ ~codecvt_utf16();
};
}
```
* codecvt_mode[link /reference/codecvt/codecvt_mode.md]
+* size_t[link /reference/cstddef/size_t.md]
* codecvt[link /reference/locale/codecvt.md]
## 概要
@@ -90,5 +93,8 @@ int main()
## 参照
- [N2401 Code Conversion Facets for the Standard C++ Library](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2401.htm)
+- [LWG Issue 2229. Standard code conversion facets underspecified](https://cplusplus.github.io/LWG/issue2229)
+ - C++14で、クラス定義が「未規定」ではなく、コンストラクタとデストラクタを持つことが明示された
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。利用者がこれらのファセットを構築できることが規定上不明確だったものの明文化であり、処理系は当初からこれらを提供していたため
- [P0618R0 Deprecating `&lt;codecvt&gt;`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0618r0.html)
- [P2871R3 Remove Deprecated Unicode Conversion Facets from C++26](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2871r3.pdf)
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>codecvt_utf8 -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/codecvt/codecvt_utf8.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/codecvt/codecvt_utf8.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/codecvt/codecvt_utf8.md b/reference/codecvt/codecvt_utf8.md
index d993a9dc1..c48640b20 100644
--- a/reference/codecvt/codecvt_utf8.md
+++ b/reference/codecvt/codecvt_utf8.md
@@ -11,11 +11,14 @@ namespace std {
template &lt;class Elem, unsigned long Maxcode = 0x10ffff,
codecvt_mode Mode = (codecvt_mode)0&gt;
class codecvt_utf8 : public codecvt&lt;Elem, char, mbstate_t&gt; {
- // 未規定...
+ public:
+ explicit codecvt_utf8(size_t refs = 0);
+ ~codecvt_utf8();
};
}
```
* codecvt_mode[link /reference/codecvt/codecvt_mode.md]
+* size_t[link /reference/cstddef/size_t.md]
* codecvt[link /reference/locale/codecvt.md]
## 概要
@@ -90,5 +93,8 @@ int main()
## 参照
- [N2401 Code Conversion Facets for the Standard C++ Library](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2401.htm)
+- [LWG Issue 2229. Standard code conversion facets underspecified](https://cplusplus.github.io/LWG/issue2229)
+ - C++14で、クラス定義が「未規定」ではなく、コンストラクタとデストラクタを持つことが明示された
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。利用者がこれらのファセットを構築できることが規定上不明確だったものの明文化であり、処理系は当初からこれらを提供していたため
- [P0618R0 Deprecating `&lt;codecvt&gt;`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0618r0.html)
- [P2871R3 Remove Deprecated Unicode Conversion Facets from C++26](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2871r3.pdf)
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>codecvt_utf8_utf16 -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/codecvt/codecvt_utf8_utf16.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/codecvt/codecvt_utf8_utf16.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/codecvt/codecvt_utf8_utf16.md b/reference/codecvt/codecvt_utf8_utf16.md
index b67766ec8..29cefdb26 100644
--- a/reference/codecvt/codecvt_utf8_utf16.md
+++ b/reference/codecvt/codecvt_utf8_utf16.md
@@ -11,11 +11,14 @@ namespace std {
template &lt;class Elem, unsigned long Maxcode = 0x10ffff,
codecvt_mode Mode = (codecvt_mode)0&gt;
class codecvt_utf8_utf16 : public codecvt&lt;Elem, char, mbstate_t&gt; {
- // 未規定...
+ public:
+ explicit codecvt_utf8_utf16(size_t refs = 0);
+ ~codecvt_utf8_utf16();
};
}
```
* codecvt_mode[link /reference/codecvt/codecvt_mode.md]
+* size_t[link /reference/cstddef/size_t.md]
* codecvt[link /reference/locale/codecvt.md]
## 概要
@@ -90,5 +93,8 @@ int main()
## 参照
- [N2401 Code Conversion Facets for the Standard C++ Library](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2401.htm)
+- [LWG Issue 2229. Standard code conversion facets underspecified](https://cplusplus.github.io/LWG/issue2229)
+ - C++14で、クラス定義が「未規定」ではなく、コンストラクタとデストラクタを持つことが明示された
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。利用者がこれらのファセットを構築できることが規定上不明確だったものの明文化であり、処理系は当初からこれらを提供していたため
- [P0618R0 Deprecating `&lt;codecvt&gt;`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0618r0.html)
- [P2871R3 Remove Deprecated Unicode Conversion Facets from C++26](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2871r3.pdf)
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>condition_variable -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/condition_variable/condition_variable.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/condition_variable/condition_variable.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/condition_variable/condition_variable.md b/reference/condition_variable/condition_variable.md
index f04ee6218..0f41c7650 100644
--- a/reference/condition_variable/condition_variable.md
+++ b/reference/condition_variable/condition_variable.md
@@ -22,6 +22,10 @@ namespace std {
`condition_variable`の適切な利用については、[条件変数の利用方法](/article/lib/how_to_use_cv.md)も参照のこと。
+## 備考
+- 処理系は、[`notify_one()`](condition_variable/notify_one.md)・[`notify_all()`](condition_variable/notify_all.md)の全ての実行、および[`wait()`](condition_variable/wait.md)・[`wait_for()`](condition_variable/wait_for.md)・[`wait_until()`](condition_variable/wait_until.md)の実行の各部分が、単一の未規定な全順序で実行されるかのように振る舞う。この全順序は「happens before」の順序と一貫している。
+
+
## メンバ関数
| 名前 | 説明 | 対応バージョン |
@@ -129,3 +133,6 @@ process data
## 参照
- [Condition Variables - Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/threads-cv.pdf)
+- [LWG Issue 2190. Condition variable specification](https://cplusplus.github.io/LWG/issue2190)
+ - C++14で、条件変数の操作が「ある未規定な全順序」ではなく「happens beforeの順序と一貫した単一の未規定な全順序」で実行されると規定された
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。元の規定では複数の全順序が存在しうると読め、待機と通知の順序がプログラムの実行順序と矛盾することを許してしまっていたが、これは矛盾した文言の修正であり、処理系の動作は変わらないため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>notify_all_at_thread_exit -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/condition_variable/condition_variable/notify_all_at_thread_exit.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/condition_variable/condition_variable/notify_all_at_thread_exit.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/condition_variable/condition_variable/notify_all_at_thread_exit.md b/reference/condition_variable/condition_variable/notify_all_at_thread_exit.md
index f981b4610..711d69066 100644
--- a/reference/condition_variable/condition_variable/notify_all_at_thread_exit.md
+++ b/reference/condition_variable/condition_variable/notify_all_at_thread_exit.md
@@ -47,6 +47,10 @@ namespace std {
通知(`notify_all()`)を先に行い、その後でロックを解放するよう順序が変更された。これにより、`lk`のロック解除を待っている別スレッドは、`notify_all()`の呼び出し完了後にはじめて起床できるため、デタッチされたスレッドで`cond`が破棄されて`notify_all()`がダングリング参照になる競合を避けられる。
+## 同期操作
+暗黙に行われる`lk.`[`unlock()`](/reference/mutex/unique_lock/unlock.md)の呼び出しは、現在のスレッドに関連付けられたスレッドストレージ期間を持つ全てのオブジェクトの破棄より後に順序付けられる。
+
+
## 戻り値
なし
@@ -142,5 +146,8 @@ data is ready: true
## 参照
- [_at_thread_exit系の関数が存在している理由](/article/lib/at_thread_exit.md)
- [N3070 - Handling Detached Threads and thread_local Variables](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3070.html)
+- [LWG Issue 2140. Meaning of `notify_all_at_thread_exit` synchronization requirement?](https://cplusplus.github.io/LWG/issue2140)
+ - C++14で、同期の規定が「スレッドローカル変数のデストラクタの完了が`cond`を待っているスレッドと同期する」から「暗黙の`unlock()`がスレッドストレージ期間のオブジェクトの破棄より後に順序付けられる」という形へ改められた
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。元の規定は待機側スレッドが起床する条件を`notify_all()`ではなくデストラクタの完了に結び付けており実装不可能であって、処理系は当初から現在の動作を採っていたため
- [LWG Issue 3343. Ordering of calls to `unlock()` and `notify_all()` in Effects element of `notify_all_at_thread_exit()` should be reversed](https://cplusplus.github.io/LWG/issue3343)
- C++26で、通知処理の順序が`notify_all()`→`unlock()`へ変更された。デタッチされたスレッドで`cond`が破棄され`notify_all()`がダングリング参照となる競合を避けるためである。この変更は欠陥報告 (DR) であり、C++26より前のバージョンでもコンパイラが早期に対応している場合がある
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>async -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/future/async.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/future/async.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/future/async.md b/reference/future/async.md
index 965109f82..7f5b1d467 100644
--- a/reference/future/async.md
+++ b/reference/future/async.md
@@ -76,6 +76,8 @@ namespace std {
- `policy &amp; launch::deferred`が`0`でない場合、関数オブジェクト`f`をその場では実行せず、遅延状態にする
- (`DECAY_COPY(std::`[`forward`](/reference/utility/forward.md)`&lt;F&gt;(f))`と`DECAY_COPY(std::`[`forward`](/reference/utility/forward.md)`&lt;Args&gt;(args))...`を[`future`](future.md)オブジェクトとの共有状態に格納する)。
- この関数の戻り値である[`future`](future.md)オブジェクトの[`get()`](future/get.md)もしくは[`wait()`](future/wait.md)が呼び出されるタイミングで、関数オブジェクト`f`に`args...`を渡して実行する。
+ - 関数オブジェクト`f`の戻り値が、共有状態に書き込まれる。
+ - 関数オブジェクト`f`の内部で例外が投げられた場合は、共有状態に投げられた例外が設定される。
- 有効な実行ポリシーが指定されていない場合(整数値を`launch`型にキャストするような状況)、その動作は未定義(C++14)。
@@ -208,6 +210,9 @@ foo() = 3
- [&amp;lt;future&amp;gt; functions - Microsoft Docs](https://docs.microsoft.com/en-us/cpp/standard-library/future-functions?view=vs-2019#remarks)
- [P2422R1 Remove `nodiscard` annotations from the standard library specification](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2422r1.html)
- C++26で`[[nodiscard]]`指定が削除された
+- [LWG Issue 2186. Incomplete action on `async`/`launch::deferred`](https://cplusplus.github.io/LWG/issue2186)
+ - C++14で、`launch::deferred`で遅延実行した場合にも、戻り値と送出された例外が共有状態へ格納されることが規定された
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。`launch::async`側にのみ規定があり遅延実行の結果をどう扱うかが規定から抜けていた記載漏れの補完であり、処理系は当初から現在の動作を採っていたため
- [LWG Issue 2752. Throws: clauses of `async` and `packaged_task` are unimplementable](https://cplusplus.github.io/LWG/issue2752)
- 実装上必要な内部確保を反映し、`async`が[`bad_alloc`](/reference/new/bad_alloc.md)も送出しうることが規定された
- この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。型消去のための内部確保が必要なため元のThrows節は実装不可能であり、処理系は当初から`bad_alloc`を送出しえたため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>operator() -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/future/packaged_task/op_call.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/future/packaged_task/op_call.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/future/packaged_task/op_call.md b/reference/future/packaged_task/op_call.md
index fb0fbd6a8..449a1722a 100644
--- a/reference/future/packaged_task/op_call.md
+++ b/reference/future/packaged_task/op_call.md
@@ -104,3 +104,5 @@ error!
## 参照
+- [LWG Issue 2142. `packaged_task::operator()` synchronization too broad?](https://cplusplus.github.io/LWG/issue2142)
+ - C++14で、この関数についての同期の規定が削除された。「`future`や`shared_future`のあらゆるメンバ関数の呼び出しと同期する」という規定は、タイムアウトで戻る[`wait_for()`](../future/wait_for.md)や[`wait_until()`](../future/wait_until.md)まで含んでしまい広すぎたため。共有状態そのものの規定で必要な同期は既に保証されている
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>ignore -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/istream/basic_istream/ignore.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/istream/basic_istream/ignore.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/istream/basic_istream/ignore.md b/reference/istream/basic_istream/ignore.md
index 70130813c..5296dd0fd 100644
--- a/reference/istream/basic_istream/ignore.md
+++ b/reference/istream/basic_istream/ignore.md
@@ -80,6 +80,9 @@ TBD
- C++98
## 参照
+- [LWG Issue 2085. Wrong description of effect 1 of `basic_istream::ignore`](https://cplusplus.github.io/LWG/issue2085)
+ - C++14で、`n`文字を入力したという終了条件が「`n != numeric_limits&lt;streamsize&gt;::max()`であり、かつそこまでに`n`文字を入力した場合」であると明確化された
+ - この修正は欠陥報告(DR)であり、C++98以降に遡及して適用される。元の文言は「`n != numeric_limits&lt;streamsize&gt;::max()`ならば`n`文字を入力する」という条件文だったため、`n == numeric_limits&lt;streamsize&gt;::max()`のときは前提が偽となって条件が成り立ってしまい、1文字も入力せずに終了すると読めてしまっていた。処理系は当初から意図どおりの動作をしていたため
- [P1264R2 Revising the wording of stream input operations](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1264r2.pdf)
- C++23でローカルエラー状態の概念が導入され、入力関数のエラー処理セマンティクスが明確化された
- [P3223R2 Making std::istream::ignore less surprising](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3223r2.html)
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>messages_base -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/locale/messages_base.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/locale/messages_base.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/locale/messages_base.md b/reference/locale/messages_base.md
index ca2fef959..600bf1f83 100644
--- a/reference/locale/messages_base.md
+++ b/reference/locale/messages_base.md
@@ -18,7 +18,7 @@ namespace std {
| 名前 | 説明 |
|----------------------|----------------------------------------|
-| `catalog` | 翻訳カタログ型 `int` |
+| `catalog` | 翻訳カタログ型&lt;br/&gt;・C++98 : `int`&lt;br/&gt;・C++14 : 未規定の符号付き整数型 |
## 例
```cpp example
@@ -62,3 +62,8 @@ done
## 関連項目
- [`messages`](messages.md)
- [`messages::open`](messages/open.md)
+
+
+## 参照
+- [LWG Issue 2028. `messages_base::catalog` overspecified](https://cplusplus.github.io/LWG/issue2028)
+ - C++14で、`catalog`の型が`int`から未規定の符号付き整数型に変更された。POSIXのメッセージカタログAPIが使用する`nl_catd`は未規定の型であり(macOSでは`void*`)、`int`に固定すると処理系がOSの提供するメッセージカタログ機能をそのまま利用できなかったため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>do_put -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/locale/num_put/do_put.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/locale/num_put/do_put.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/locale/num_put/do_put.md b/reference/locale/num_put/do_put.md
index 37da3e809..b1d3b5d0b 100644
--- a/reference/locale/num_put/do_put.md
+++ b/reference/locale/num_put/do_put.md
@@ -122,3 +122,9 @@ Stage 3の終了時点での`charT`の列が、`*out++ = c`によって出力さ
- [`num_put::put`](put.md)
- [`numpunct`](/reference/locale/numpunct.md)
- [`num_get::do_get`](/reference/locale/num_get/do_get.md)
+
+
+## 参照
+- [LWG Issue 2293. Wrong facet used by `num_put::do_put`](https://cplusplus.github.io/LWG/issue2293)
+ - C++14で、`bool`版が[`truename()`](/reference/locale/numpunct/truename.md)・[`falsename()`](/reference/locale/numpunct/falsename.md)を取得するファセットが、[`ctype`](/reference/locale/ctype.md)から[`numpunct`](/reference/locale/numpunct.md)へ修正された
+ - この修正は欠陥報告(DR)であり、C++98以降に遡及して適用される。これらのメンバ関数を持つのは[`numpunct`](/reference/locale/numpunct.md)であり、[`ctype`](/reference/locale/ctype.md)を指定した元の規定は実装不可能だったため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>seekp -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/ostream/basic_ostream/seekp.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/ostream/basic_ostream/seekp.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/ostream/basic_ostream/seekp.md b/reference/ostream/basic_ostream/seekp.md
index a47d4f23c..e267202e9 100644
--- a/reference/ostream/basic_ostream/seekp.md
+++ b/reference/ostream/basic_ostream/seekp.md
@@ -16,20 +16,38 @@ basic_ostream&lt;CharT, Traits&gt;&amp; seekp(off_type off, seekdir dir); // (2)
## 効果
-- (1) 出力ストリームの書き込み位置を `pos` に設定する。
-- (2) 出力ストリームの書き込み位置を `dir` を基準として相対位置 `off` に設定する。
+- (1) :
+ - 出力ストリームの書き込み位置を `pos` に設定する。
+ - 設定に失敗した場合、[`setstate`](../../ios/basic_ios/setstate.md)`(failbit)`を呼び出す。
+- (2) :
+ - 出力ストリームの書き込み位置を `dir` を基準として相対位置 `off` に設定する。
+ - 設定に失敗した場合の動作は、以下のようにバージョンによって異なる。
+ - C++98 : ストリームの状態は変化しない。
+ - C++14 : [`setstate`](../../ios/basic_ios/setstate.md)`(failbit)`を呼び出す。
## 戻り値
`*this`
## 備考
-本関数の処理内容は以下の通り。
+- 本関数の処理内容は以下の通り。
+ 1. [`sentry`](sentry.md) オブジェクトを構築する(C++11 以降のみ)。
+ 1. 与えられた実引数により、以下のいずれかを実行する。
+ - (1) [`rdbuf`](../../ios/basic_ios/rdbuf.md)`()-&gt;`[`pubseekpos`](../../streambuf/basic_streambuf/pubseekpos.md)`(pos, ios_base::out)`
+ - (2) [`rdbuf`](../../ios/basic_ios/rdbuf.md)`()-&gt;`[`pubseekoff`](../../streambuf/basic_streambuf/pubseekoff.md)`(off, dir, ios_base::out)`
+ 1. 処理に失敗した場合(上記の戻り値が `-1` だった場合)、[`setstate`](../../ios/basic_ios/setstate.md)`(failbit)`を呼び出す。
+- C++14より前の(2)には、この3番目の手順が規定されていなかった。そのため、位置の移動に失敗しても[`fail()`](../../ios/basic_ios/fail.md)は`false`のままとなり、呼び出し側は失敗を検知できなかった。移動できなかったことに気付かないまま出力を続けると、意図しない位置へ書き込んでしまう。
+ ```cpp
+ os.seekp(-100, std::ios_base::cur); // シーク不能なストリームでは失敗する
+
+ // C++98 : 失敗してもfail()はfalseのままであり、このifは実行されない
+ // C++14 : 失敗するとfailbitが設定され、このifが実行される
+ if (os.fail()) {
+ // 移動に失敗したことを検知できる
+ }
+ ```
+ * seekp[color ff0000]
+ * os.fail()[link ../../ios/basic_ios/fail.md]
-1. [`sentry`](sentry.md) オブジェクトを構築する(C++11 以降のみ)。
-1. 与えられた実引数により、以下のいずれかを実行する。
- - (1) [`rdbuf`](../../ios/basic_ios/rdbuf.md)`()-&gt;`[`pubseekpos`](../../streambuf/basic_streambuf/pubseekpos.md)`(pos, ios_base::out)`
- - (2) [`rdbuf`](../../ios/basic_ios/rdbuf.md)`()-&gt;`[`pubseekoff`](../../streambuf/basic_streambuf/pubseekoff.md)`(off, dir, ios_base::out)`
-1. 処理に失敗した場合(上記の戻り値が `-1` だった場合)、[`setstate`](../../ios/basic_ios/setstate.md)`(failbit)`を呼び出す。
## 例
以下は、`off_type` と `seekdir` を使用する例。
@@ -72,7 +90,7 @@ basic_ostream&lt;CharT, Traits&gt;&amp; seekp(off_type off, seekdir dir) {
sentry s(*this);
if (!this-&gt;fail()) {
if (this-&gt;rdbuf()-&gt;pubseekoff(off, dir, ios_base::out) == pos_type(-1)) {
- this-&gt;setstate(failbit);
+ this-&gt;setstate(failbit); // C++14から
}
}
return *this;
@@ -94,3 +112,5 @@ basic_ostream&lt;CharT, Traits&gt;&amp; seekp(off_type off, seekdir dir) {
- [`basic_ostream::tellp`](tellp.md)
- [`basic_streambuf::pubseekpos`](../../streambuf/basic_streambuf/pubseekpos.md)
- [`basic_streambuf::pubseekoff`](../../streambuf/basic_streambuf/pubseekoff.md)
+- [LWG Issue 2341. Inconsistency between `basic_ostream::seekp(pos)` and `basic_ostream::seekp(off, dir)`](https://cplusplus.github.io/LWG/issue2341)
+ - C++14で、(2)の相対位置指定版についても、位置の移動に失敗した場合に`setstate(failbit)`を呼び出すことが規定された。(1)の絶対位置指定版のみに規定があり、(2)では失敗を検知する手段がなかったため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>mark_count -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/regex/basic_regex/mark_count.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/regex/basic_regex/mark_count.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/regex/basic_regex/mark_count.md b/reference/regex/basic_regex/mark_count.md
index 00c2c3be7..9087cc21d 100644
--- a/reference/regex/basic_regex/mark_count.md
+++ b/reference/regex/basic_regex/mark_count.md
@@ -53,3 +53,9 @@ int main()
- [GCC](/implementation.md#gcc): 4.9.0 [mark verified], 4.9.1 [mark verified], 4.9.2 [mark verified], 5.0.0 [mark verified]
- [ICC](/implementation.md#icc): ??
- [Visual C++](/implementation.md#visual_cpp): ??
+
+
+## 参照
+- [LWG Issue 2359. How does `regex_constants::nosubs` affect `basic_regex::mark_count()`?](https://cplusplus.github.io/LWG/issue2359)
+ - C++14で、[`regex_constants::nosubs`](../regex_constants/syntax_option_type.md)が「いかなる部分式もマークされたものとして扱わない」ことを指定するものであると明確化され、本関数が`0`を返すことが規定から導かれるようになった
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。`nosubs`が本関数へ及ぼす影響が未規定だったものの明文化であり、処理系は当初から`0`を返していたため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>syntax_option_type -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/regex/regex_constants/syntax_option_type.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/regex/regex_constants/syntax_option_type.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/regex/regex_constants/syntax_option_type.md b/reference/regex/regex_constants/syntax_option_type.md
index 64ead4596..aa9ce6090 100644
--- a/reference/regex/regex_constants/syntax_option_type.md
+++ b/reference/regex/regex_constants/syntax_option_type.md
@@ -45,7 +45,7 @@ namespace regex_constants {
| 名前 | 説明 | 対応バージョン |
|------|------|----------------|
| `icase` | 正規表現のマッチで大文字小文字を区別しないことを指定する。 | C++11 |
-| `nosubs` | 正規表現のマッチ成功時に、渡された[`match_results`](/reference/regex/match_results.md)オブジェクトへの参照に、部分式のマッチ情報を格納しないことを指定する | C++11 |
+| `nosubs` | いかなる部分式もマークされたものとして扱わないことを指定する。これにより、正規表現のマッチ成功時に、渡された[`match_results`](/reference/regex/match_results.md)オブジェクトへの参照に、部分式のマッチ情報が格納されなくなる | C++11 |
| `optimize` | 正規表現エンジンに、正規表現オブジェクトの構築速度よりもマッチ速度に注意を払うべきであることを指定する。 | C++11 |
| `collate` | \[a-b\]形式の文字範囲がロケールを考慮することを指定する | C++11 |
| `ECMAScript` | ECMA-262仕様第 3 版のECMAScript言語で使用されている正規表現と同じ構文を使用する | C++11 |
@@ -79,5 +79,8 @@ namespace regex_constants {
- 定数定義に不要な`static`が付いていたため、C++14で削除
- [LWG Issue 2330. regex(&#34;meow&#34;, regex::icase) is technically forbidden but should be permitted](http://cplusplus.github.io/LWG/lwg-defects.html#2330)
- [`regex`](../basic_regex.md)`(&#34;meow&#34;, regex::icase)` のような指定を許可する
+- [LWG Issue 2359. How does `regex_constants::nosubs` affect `basic_regex::mark_count()`?](https://cplusplus.github.io/LWG/issue2359)
+ - C++14で、`nosubs`が「いかなる部分式もマークされたものとして扱わない」ことを指定するものであると明確化された。これにより[`basic_regex::mark_count()`](/reference/regex/basic_regex/mark_count.md)が`0`を返すことが規定から導かれる
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。`nosubs`が[`basic_regex::mark_count()`](/reference/regex/basic_regex/mark_count.md)へ及ぼす影響が未規定だったものの明文化であり、処理系は当初から`0`を返していたため
- [LWG Issue 2503. `multiline` option should be added to `syntax_option_type`](https://wg21.cmeerw.net/lwg/issue2503)
- C++17で`multiline`オプションを追加
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>lookup_classname -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/regex/regex_traits/lookup_classname.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/regex/regex_traits/lookup_classname.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/regex/regex_traits/lookup_classname.md b/reference/regex/regex_traits/lookup_classname.md
index 2f72728e8..943d5df55 100644
--- a/reference/regex/regex_traits/lookup_classname.md
+++ b/reference/regex/regex_traits/lookup_classname.md
@@ -94,4 +94,7 @@ int main()
## 参照
- [LWG Issue 2018. [CD] `regex_traits::isctype` Returns clause is wrong](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2018)
- - C++14から、戻り値の仕様文面が見直された。
+ - C++14で、戻り値の仕様文面が見直された
+- [LWG Issue 2271. `regex_traits::lookup_classname` specification unclear](https://cplusplus.github.io/LWG/issue2271)
+ - C++14で、クラス名が認識できなかった場合の戻り値が、「`0`と等値比較できる値」から`char_class_type()`に変更された
+ - この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。`char_class_type`はビットマスク型であり、ビットマスク型は[`bitset`](/reference/bitset/bitset.md)で実装してもよいため`0`と等値比較できるとは限らず、元の規定は実装不可能だったため
</code></pre></summary>
<author>
<name>Akira Takahashi</name>
<email>faithandbrave@gmail.com</email>
</author>
</entry>
<entry>
<title>construct -- Merge pull request #1748 from cpprefjp/cpp14_lib_issues</title>
<link href="https://cpprefjp.github.io/reference/scoped_allocator/scoped_allocator_adaptor/construct.html"/>
<id>f47100aeedc9b61f5afe099cd5d859adb8c997b6:reference/scoped_allocator/scoped_allocator_adaptor/construct.md</id>
<updated>2026-08-26T11:10:53+09:00</updated>
<summary type="html"><pre><code>diff --git a/reference/scoped_allocator/scoped_allocator_adaptor/construct.md b/reference/scoped_allocator/scoped_allocator_adaptor/construct.md
index 712d6ccaf..6f65d95ee 100644
--- a/reference/scoped_allocator/scoped_allocator_adaptor/construct.md
+++ b/reference/scoped_allocator/scoped_allocator_adaptor/construct.md
@@ -69,9 +69,9 @@ apply(
- [`uses_allocator`](/reference/memory/uses_allocator.md)`&lt;T1, inner_allocator_type&gt;::value == false` かつ [`is_constructible`](/reference/type_traits/is_constructible.md)`&lt;T1, Args1...&gt;::value == true` の場合
`x` を `xprime` とする。
- [`uses_allocator`](/reference/memory/uses_allocator.md)`&lt;T1, inner_allocator_type&gt;::value == true` かつ [`is_constructible`](/reference/type_traits/is_constructible.md)`&lt;T1,` [`allocator_arg_t`](/reference/memory/allocator_arg_t.md)`, inner_allocator_type, Args1...&gt;::value == true` の場合
- [`tuple_cat`](/reference/tuple/tuple_cat.md)`(`[`tuple`](/reference/tuple/tuple.md)`&lt;`[`allocator_arg_t`](/reference/memory/allocator_arg_t.md)`, inner_allocator_type&amp;&gt;(`[`allocator_arg`](/reference/memory/allocator_arg_t.md)`, inner_allocator_type()), x)` を `xprime` とする。
+ [`tuple_cat`](/reference/tuple/tuple_cat.md)`(`[`tuple`](/reference/tuple/tuple.md)`&lt;`[`allocator_arg_t`](/reference/memory/allocator_arg_t.md)`, inner_allocator_type&amp;&gt;(`[`allocator_arg`](/reference/memory/allocator_arg_t.md)`,` [`inner_allocator`](inner_allocator.md)`()),` [`move`](/reference/utility/move.md)`(x))` を `xprime` とする。
- [`uses_allocator`](/reference/memory/uses_allocator.md)`&lt;T1, inner_allocator_type&gt;::value == true` かつ [`is_constructible`](/reference/type_traits/is_constructible.md)`&lt;T1, Args1..., inner_allocator_type&gt;::value == true` の場合
- [`tuple_cat`](/reference/tuple/tuple_cat.md)`(x,` [`tuple`](/reference/tuple/tuple.md)`&lt;inner_allocator_type&amp;&gt;(inner_allocator_type()))` を `xprime` とする。
+ [`tuple_cat`](/reference/tuple/tuple_cat.md)`(`[`move`](/reference/utility/move.md)`(x),` [`tuple`](/reference/tuple/tuple.md)`&lt;inner_allocator_type&amp;&gt;(`[`inner_allocator`](inner_allocator.md)`()))` を `xprime` とする。
- それ以外の場合、プログラムは不適格となる。
- (3) : 以下と等価の動作を行う。