1<section xmlns="http://docbook.org/ns/docbook" version="5.0"
2	 xml:id="status.iso.2017" xreflabel="Status C++ 2017">
3<?dbhtml filename="status_iso_cxx2017.html"?>
4
5<info><title>C++ 2017</title>
6  <keywordset>
7    <keyword>ISO C++</keyword>
8    <keyword>2017</keyword>
9  </keywordset>
10</info>
11
12<para>
13In this implementation the <literal>-std=gnu++17</literal> or
14<literal>-std=c++17</literal> flag must be used to enable language
15and library
16features. See <link linkend="manual.intro.using.flags">dialect</link>
17options. The pre-defined symbol
18<constant>__cplusplus</constant> is used to check for the
19presence of the required flag.
20GCC 9.1 was the first release with non-experimental C++17 support,
21so the API and ABI of features added in C++17 is only stable
22since that release.
23</para>
24
25<para>
26This section describes the C++17 and library TS support in the GCC 12 release series,
27not in any particular release.
28</para>
29
30<para>
31The following table lists new library features that are included in
32the C++17 standard. The "Proposal" column provides a link to the
33ISO C++ committee proposal that describes the feature, while the "Status"
34column indicates the first version of GCC that contains an implementation of
35this feature (if it has been implemented).
36The "SD-6 Feature Test" column shows the corresponding macro or header from
37<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6:
38Feature-testing recommendations for C++</link>.
39</para>
40
41<table frame="all" xml:id="table.cxx17_features">
42<title>C++ 2017 Library Features</title>
43
44<tgroup cols="4" align="left" colsep="0" rowsep="1">
45<colspec colname="c1"/>
46<colspec colname="c2"/>
47<colspec colname="c3"/>
48<colspec colname="c4"/>
49  <thead>
50    <row>
51      <entry>Library Feature</entry>
52      <entry>Proposal</entry>
53      <entry>Status</entry>
54      <entry>SD-6 Feature Test</entry>
55    </row>
56  </thead>
57
58  <tbody>
59
60    <row>
61      <entry>
62	<code>constexpr std::hardware_{constructive,destructive}_interference_size</code>
63      </entry>
64      <entry>
65	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html">
66	P0154R1
67	</link>
68      </entry>
69      <entry align="center"> 12.1 </entry>
70      <entry> <code>__cpp_lib_hardware_interference_size >= 201603</code> </entry>
71    </row>
72
73    <row>
74      <entry> Core Issue 1776: Replacement of class objects containing reference members</entry>
75      <entry>
76	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html">
77	P0137R1
78	</link>
79      </entry>
80      <entry align="center"> 7.1 </entry>
81      <entry> <code>__cpp_lib_launder >= 201606</code> </entry>
82    </row>
83
84    <row>
85      <entry>Wording for <code>std::uncaught_exceptions</code></entry>
86      <entry>
87	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf">
88	  N4259
89	</link>
90      </entry>
91      <entry align="center">6.1</entry>
92      <entry><code>__cpp_lib_uncaught_exceptions >= 201411</code></entry>
93    </row>
94
95    <row>
96      <entry> C++17 should refer to C11 instead of C99 </entry>
97      <entry>
98	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html">
99	P0063R3
100	</link>
101      </entry>
102      <entry align="center"> 9.1 </entry>
103      <entry/>
104    </row>
105
106    <row>
107      <entry> Variant: a type-safe union for C++17 </entry>
108      <entry>
109	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0088r3.html">
110	P0088R3
111	</link>
112      </entry>
113      <entry align="center"> 7.1 </entry>
114      <entry> <code>__has_include(&lt;variant&gt;)</code>,
115              <code>__cpp_lib_variant >= 201603</code>
116              (since 7.3, see Note 1)
117      </entry>
118    </row>
119
120    <row>
121      <entry> Library Fundamentals V1 TS Components: <code>optional</code> </entry>
122      <entry>
123	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
124	P0220R1
125	</link>
126      </entry>
127      <entry align="center"> 7.1 </entry>
128      <entry> <code>__has_include(&lt;optional&gt;)</code>,
129              <code>__cpp_lib_optional >= 201603</code>
130              (since 7.3, see Note 1)
131      </entry>
132    </row>
133
134    <row>
135      <entry> Library Fundamentals V1 TS Components: <code>any</code> </entry>
136      <entry>
137	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
138	P0220R1
139	</link>
140      </entry>
141      <entry align="center"> 7.1 </entry>
142      <entry> <code>__has_include(&lt;any&gt;)</code>,
143              <code>__cpp_lib_any >= 201603</code>
144              (since 7.3, see Note 1)
145      </entry>
146    </row>
147
148    <row>
149      <entry> Library Fundamentals V1 TS Components: <code>string_view</code> </entry>
150      <entry>
151	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
152	P0220R1
153	</link>
154      </entry>
155      <entry align="center"> 7.1 </entry>
156      <entry> <code>__has_include(&lt;string_view&gt;)</code>,
157              <code>__cpp_lib_string_view >= 201603</code>
158              (since 7.3, see Note 1)
159      </entry>
160    </row>
161
162    <row>
163      <entry> Library Fundamentals V1 TS Components: <code>memory_resource</code> </entry>
164      <entry>
165	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
166	P0220R1
167	</link>
168      </entry>
169      <entry align="center"> 9.1 </entry>
170      <entry> <code>__has_include(&lt;memory_resource&gt;)</code>,
171              <code>__cpp_lib_memory_resource >= 201603</code>
172      </entry>
173    </row>
174
175    <row>
176      <entry> Library Fundamentals V1 TS Components: <code>apply</code> </entry>
177      <entry>
178	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
179	P0220R1
180	</link>
181      </entry>
182      <entry align="center"> 7.1 </entry>
183      <entry> <code>__cpp_lib_apply >= 201603</code> </entry>
184    </row>
185
186    <row>
187      <entry> Library Fundamentals V1 TS Components: <code>shared_ptr&lt;T[]&gt;</code> </entry>
188      <entry>
189	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
190	P0220R1
191	</link>
192      </entry>
193      <entry align="center"> 7.1 </entry>
194      <entry> <code>__cpp_lib_shared_ptr_arrays >= 201603</code> </entry>
195    </row>
196
197    <row>
198      <entry> Library Fundamentals V1 TS Components: Searchers </entry>
199      <entry>
200	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
201	P0220R1
202	</link>
203      </entry>
204      <entry align="center"> 7.1 </entry>
205      <entry> <code>__cpp_lib_boyer_moore_searcher >= 201603</code> </entry>
206    </row>
207
208    <row>
209      <entry> Library Fundamentals V1 TS Components: Sampling </entry>
210      <entry>
211	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
212	P0220R1
213	</link>
214      </entry>
215      <entry align="center"> 7.1 </entry>
216      <entry> <code>__cpp_lib_sample >= 201603</code> </entry>
217    </row>
218
219    <row>
220      <entry> Constant View: A proposal for a <code>std::as_const</code> helper function template	</entry>
221      <entry>
222	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="">
223	P0007R1
224	</link>
225      </entry>
226      <entry align="center"> 7.1 </entry>
227      <entry><code> __cpp_lib_as_const >= 201510 </code></entry>
228    </row>
229
230    <row>
231      <entry> Improving pair and tuple </entry>
232      <entry>
233	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387">
234	N4387
235	</link>
236      </entry>
237      <entry align="center"> 6.1 </entry>
238      <entry> N/A </entry>
239    </row>
240
241    <row>
242      <entry> <code>make_from_tuple</code>: apply for construction </entry>
243      <entry>
244	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf">
245	P0209R2
246	</link>
247      </entry>
248      <entry align="center"> 7.1 </entry>
249      <entry><code> __cpp_lib_make_from_tuple >= 201606 </code></entry>
250    </row>
251
252    <row>
253      <?dbhtml bgcolor="#C8B0B0" ?>
254      <entry>
255        Removing <code>auto_ptr</code>, <code>random_shuffle()</code>,
256        And Old <code>&lt;functional&gt;</code> Stuff
257      </entry>
258      <entry>
259	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm">
260	  N4190
261	</link>
262      </entry>
263      <entry align="center">No (kept for backwards compatibility)</entry>
264      <entry/>
265    </row>
266
267    <row>
268      <entry> Deprecating Vestigial Library Parts in C++17 </entry>
269      <entry>
270	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html">
271	P0174R2
272	</link>
273      </entry>
274      <entry align="center"> 12.1 </entry>
275      <entry/>
276    </row>
277
278    <row>
279      <entry> Making <code>std::owner_less</code> more flexible </entry>
280      <entry>
281	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html">
282	P0074R0
283	</link>
284      </entry>
285      <entry align="center"> 7.1 </entry>
286      <entry><code> __cpp_lib_transparent_operators >= 201510 </code></entry>
287    </row>
288
289    <row>
290      <entry> <code>std::addressof</code> should be constexpr </entry>
291      <entry>
292	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296">
293	LWG2296
294	</link>
295      </entry>
296      <entry align="center"> 7.1 </entry>
297      <entry><code> __cpp_lib_addressof_constexpr >= 201603 </code></entry>
298    </row>
299
300    <row>
301      <entry> Safe conversions in <code>unique_ptr&lt;T[]&gt;</code> </entry>
302      <entry>
303	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf">
304	N4089
305	</link>
306      </entry>
307      <entry align="center"> 6 </entry>
308      <entry/>
309    </row>
310
311    <row>
312      <entry> LWG 2228: Missing SFINAE rule in unique_ptr templated assignment </entry>
313      <entry>
314	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html">
315	  N4366
316	</link>
317      </entry>
318      <entry align="center"> 6 </entry>
319      <entry/>
320    </row>
321
322    <row>
323      <entry> Re-enabling <code>shared_from_this</code></entry>
324      <entry>
325	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html">
326	P0033R1
327	</link>
328      </entry>
329      <entry align="center"> 7.1 </entry>
330      <entry><code>__cpp_lib_enable_shared_from_this >= 201603</code></entry>
331    </row>
332
333    <row>
334      <entry> A proposal to add <code>invoke</code> function template </entry>
335      <entry>
336	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html">
337	N4169
338	</link>
339      </entry>
340      <entry align="center"> 6.1 </entry>
341      <entry><code> __cpp_lib_invoke >= 201411 </code></entry>
342    </row>
343
344    <row>
345      <entry>TriviallyCopyable <code>reference_wrapper</code> </entry>
346      <entry>
347	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html">
348	  N4277
349	</link>
350      </entry>
351      <entry align="center"> 5.1 </entry>
352      <entry/>
353    </row>
354
355    <row>
356      <entry> Adopt <code>not_fn</code> from Library Fundamentals 2 for C++17 </entry>
357      <entry>
358	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html">
359	P0005R4
360	</link>
361      </entry>
362      <entry align="center"> 7.1 </entry>
363      <entry><code>__cpp_lib_not_fn >= 201603</code></entry>
364    </row>
365
366    <row>
367      <entry> Fixes for <code>not_fn</code> </entry>
368      <entry>
369	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html">
370	P0358R1
371	</link>
372      </entry>
373      <entry align="center"> 7.1 </entry>
374      <entry/>
375    </row>
376
377    <row>
378      <entry> Fixing a design mistake in the searchers interface in Library Fundamentals </entry>
379      <entry>
380	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf">
381	P0253R1
382	</link>
383      </entry>
384      <entry align="center"> 7.1 </entry>
385      <entry/>
386    </row>
387
388    <row>
389      <entry> Extending memory management tools </entry>
390      <entry>
391	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html">
392	P0040R3
393	</link>
394      </entry>
395      <entry align="center"> 7.1 </entry>
396      <entry><code>__cpp_lib_raw_memory_algorithms &gt;= 201606L</code></entry>
397    </row>
398
399    <row>
400      <entry> <code>shared_ptr::weak_type</code></entry>
401      <entry>
402	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html">
403	P0163R0
404	</link>
405      </entry>
406      <entry align="center"> 7.1 </entry>
407      <entry><code> __cpp_lib_shared_ptr_weak_type >= 201606</code></entry>
408    </row>
409
410    <row>
411      <entry>Transformation Trait Alias <code>void_t</code></entry>
412      <entry>
413	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n3911.pdf">
414	  N3911
415	</link>
416      </entry>
417      <entry align="center">6.1</entry>
418      <entry><code> __cpp_lib_void_t >= 201411</code></entry>
419    </row>
420
421    <row>
422      <entry> Wording for <code>bool_constant</code>, revision 1 </entry>
423      <entry>
424	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html">
425	  N4389
426	</link>
427      </entry>
428      <entry align="center">6.1</entry>
429      <entry><code> __cpp_lib_bool_constant >= 201505</code></entry>
430    </row>
431
432    <row>
433      <entry> Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</entry>
434      <entry>
435	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html">
436	P0006R0
437	</link>
438      </entry>
439      <entry align="center"> 7.1 </entry>
440      <entry><code> __cpp_lib_type_trait_variable_templates >= 201510 </code></entry>
441    </row>
442
443    <row>
444      <entry> Logical Operator Type Traits</entry>
445      <entry>
446	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html">
447	P0013R1
448	</link>
449      </entry>
450      <entry align="center"> 6.1 </entry>
451      <entry><code> __cpp_lib_logical_traits >= 201510 </code></entry>
452    </row>
453
454    <row>
455      <entry> Adding [nothrow-]swappable traits </entry>
456      <entry>
457	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html">
458	P0185R1
459	</link>
460      </entry>
461      <entry align="center"> 7.1 (<code>__is_swappable</code> available since 6.1)</entry>
462      <entry><code> __cpp_lib_is_swappable >= 201603 </code></entry>
463    </row>
464
465    <row>
466      <entry> <code>is_callable</code>, the missing INVOKE related trait</entry>
467      <entry>
468	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html">
469	P0077R2
470	</link>
471      </entry>
472      <entry align="center"> 7.1 </entry>
473      <entry><code> __cpp_lib_is_invocable >= 201703 </code></entry>
474    </row>
475
476    <row>
477      <entry> has_unique_object_representations </entry>
478      <entry>
479	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html">
480	P0258R2
481	</link>
482      </entry>
483      <entry align="center"> 7.1 </entry>
484      <entry><code> __cpp_lib_has_unique_object_representations >= 201606 </code></entry>
485    </row>
486
487    <row>
488      <entry> Polishing <code>&lt;chrono&gt;</code> </entry>
489      <entry>
490	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0092r1.html">
491	P0092R1
492	</link>
493      </entry>
494      <entry align="center"> 7.1 </entry>
495      <entry><code> __cpp_lib_chrono >= 201510 </code></entry>
496    </row>
497
498    <row>
499      <entry> Adding more constexpr to <code>&lt;chrono&gt;</code> </entry>
500      <entry>
501	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0505r0.html">
502	P0505R0
503	</link>
504      </entry>
505      <entry align="center"> 7.1 </entry>
506      <entry><code> __cpp_lib_chrono >= 201611 </code>
507             (since 7.3, see Note 2)
508      </entry>
509    </row>
510
511    <row>
512      <entry> Constexpr for <code>std::char_traits</code> </entry>
513      <entry>
514	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0426r1.html">
515	P0426R1
516	</link>
517      </entry>
518      <entry align="center"> 8.1 </entry>
519      <entry><code> __cpp_lib_constexpr_string >= 201611 </code></entry>
520    </row>
521
522    <row>
523      <entry> Integrating <code>std::string_view</code> and <code>std::string</code> </entry>
524      <entry>
525	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf">
526	P0254R2
527	</link>
528      </entry>
529      <entry align="center"> 7.1 </entry>
530      <entry><code> </code></entry>
531    </row>
532
533    <row>
534      <entry> Give 'std::string' a non-const '.data()' member function </entry>
535      <entry>
536	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html">
537	P0272R1
538	</link>
539      </entry>
540      <entry align="center"> 7.1 </entry>
541      <entry><code> </code></entry>
542    </row>
543
544    <row>
545      <entry>Cleaning-up noexcept in the Library</entry>
546      <entry>
547	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf">
548	  N4258
549	</link>
550      </entry>
551      <entry align="center">6.1</entry>
552      <entry><code> __cpp_lib_allocator_traits_is_always_equal >= 201411 </code></entry>
553    </row>
554
555    <row>
556      <entry>Contiguous Iterators </entry>
557      <entry>
558	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.html">
559	  N4284
560	</link>
561      </entry>
562      <entry align="center">N/A</entry>
563      <entry/>
564    </row>
565
566    <row>
567      <entry> Minimal incomplete type support for standard containers </entry>
568      <entry>
569	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html">
570	N4510
571	</link>
572      </entry>
573      <entry align="center"> 3.0 </entry>
574      <entry><code> __cpp_lib_incomplete_container_elements >= 201505 </code>
575	     (since 6.2, see Note 2)
576      </entry>
577    </row>
578
579    <row>
580      <entry> Emplace return type </entry>
581      <entry>
582	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf">
583	P0084R2
584	</link>
585      </entry>
586      <entry align="center"> 7.1 </entry>
587      <entry/>
588    </row>
589
590    <row>
591      <entry>Improved insertion interface for unique-key maps</entry>
592      <entry>
593	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html">
594	  N4279
595	</link>
596      </entry>
597      <entry align="center"> 6.1 </entry>
598      <entry><code> __cpp_lib_map_try_emplace >= 201411</code>,
599	     <code> __cpp_lib_unordered_map_try_emplace >= 201411</code>
600      </entry>
601    </row>
602
603    <row>
604      <entry> Splicing Maps and Sets </entry>
605      <entry>
606	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf">
607	P0083R3
608	</link>
609      </entry>
610      <entry align="center"> 7.1 </entry>
611      <entry><code> __cpp_lib_node_extract >= 201606 </code></entry>
612    </row>
613
614    <row>
615      <entry>Non-member <code>size()</code> and more</entry>
616      <entry>
617	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf">
618	  N4280
619	</link>
620      </entry>
621      <entry align="center"> 6.1 </entry>
622      <entry><code> __cpp_lib_nonmember_container_access >= 201411 </code></entry>
623    </row>
624
625    <row>
626      <entry> A Proposal to Add Constexpr Modifiers to <code>reverse_iterator</code>, <code>move_iterator</code>, <code>array</code> and Range Access </entry>
627      <entry>
628	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html">
629	P0031R0
630	</link>
631      </entry>
632      <entry align="center"> 7.1 </entry>
633      <entry><code> __cpp_lib_array_constexpr >= 201603 </code></entry>
634    </row>
635
636    <row>
637      <?dbhtml bgcolor="#B0B0B0" ?>
638      <entry> The Parallelism TS Should be Standardized	 </entry>
639      <entry>
640	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html">
641	P0024R2
642	</link>
643      </entry>
644      <entry align="center"> 9.1 </entry>
645      <entry><code> __has_include(&lt;execution&gt;)</code>,
646	     <code> __cpp_lib_execution >= 201603 </code>,
647	     <code> __cpp_lib_parallel_algorithm >= 201603 </code>
648             (requires linking with <code>-ltbb</code>, see Note 3)
649      </entry>
650    </row>
651
652    <row>
653      <entry> An algorithm to "clamp" a value between a pair of boundary values </entry>
654      <entry>
655	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html">
656	P0025R0
657	</link>
658      </entry>
659      <entry align="center"> 7.1 </entry>
660      <entry><code> __cpp_lib_clamp >= 201603 </code></entry>
661    </row>
662
663    <row>
664      <entry> Adopt Selected Library Fundamentals V2 Components for C++17 </entry>
665      <entry>
666	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf">
667	P0295R0
668	</link>
669      </entry>
670      <entry align="center"> 7.1 </entry>
671      <entry><code> __cpp_lib_gcd_lcm >= 201606 </code></entry>
672    </row>
673
674    <row>
675      <entry> Proposal to Introduce a 3-Argument Overload to <code>std::hypot</code> </entry>
676      <entry>
677	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf">
678	P0030R1
679	</link>
680      </entry>
681      <entry align="center"> 7.1 </entry>
682      <entry><code> __cpp_lib_hypot >= 201603 </code></entry>
683    </row>
684
685    <row>
686      <entry> Mathematical Special Functions for C++17 </entry>
687      <entry>
688	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf">
689	P0226R1
690	</link>
691      </entry>
692      <entry align="center"> 7.1 </entry>
693      <entry><code> __cpp_lib_math_special_functions >= 201603 </code>
694	     (see Note 4)
695      </entry>
696    </row>
697
698    <row>
699      <entry>Adopt the File System TS for C++17	 </entry>
700      <entry>
701	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html">
702	P0218R1
703	</link>
704      </entry>
705      <entry align="center"> 8.1 </entry>
706      <entry><code> __has_include(&lt;filesystem&gt;)</code>,
707	     <code> __cpp_lib_filesystem >= 201603 </code>
708	     (GCC 8.x requires linking with <code>-lstdc++fs</code>)
709      </entry>
710    </row>
711
712    <row>
713      <entry> Relative Paths for Filesystem</entry>
714      <entry>
715	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html">
716	P0219R1
717	</link>
718      </entry>
719      <entry align="center"> 8.1 </entry>
720      <entry><code> __cpp_lib_filesystem >= 201606 </code></entry>
721    </row>
722
723    <row>
724      <entry> Adapting string_view by filesystem paths </entry>
725      <entry>
726	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf">
727	P0392R0
728	</link>
729      </entry>
730      <entry align="center"> 8.1 </entry>
731      <entry><code> __cpp_lib_filesystem >= 201606 </code></entry>
732    </row>
733
734    <row>
735      <entry> Directory Entry Caching for Filesystem </entry>
736      <entry>
737       <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0317r1.html">
738       P0317R1
739       </link>
740      </entry>
741      <entry align="center"> 8.1 </entry>
742      <entry><code> __cpp_lib_filesystem >= 201703 </code></entry>
743     </row>
744
745    <row>
746      <entry> constexpr <code>atomic&lt;T&gt;::is_always_lock_free</code>	 </entry>
747      <entry>
748	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html">
749	P0152R1
750	</link>
751      </entry>
752      <entry align="center"> 7.1 </entry>
753      <entry><code> __cpp_lib_atomic_is_always_lock_free >= 201603 </code></entry>
754    </row>
755
756    <row>
757      <entry>A proposal to add <code>shared_mutex</code> (untimed) (Revision 4)</entry>
758      <entry>
759	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html">
760	  N4508
761	</link>
762      </entry>
763      <entry align="center"> 6.1 </entry>
764      <entry><code> __cpp_lib_shared_mutex >= 201505 </code></entry>
765    </row>
766
767    <row>
768      <entry> Variadic <code>lock_guard</code> (Rev. 5) </entry>
769      <entry>
770	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0156r2.html">
771	P0156R2
772	</link>
773      </entry>
774      <entry align="center"> 7.1 </entry>
775      <entry><code> __cpp_lib_scoped_lock >= 201703 </code></entry>
776    </row>
777
778    <row>
779      <entry> A byte type definition </entry>
780      <entry>
781	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf">
782	P0298R3
783	</link>
784      </entry>
785      <entry align="center"> 7.1 </entry>
786      <entry><code> __cpp_lib_byte >= 201603 </code> (since 7.3, see Note 2)
787      </entry>
788    </row>
789
790    <row>
791      <entry> Elementary string conversions </entry>
792      <entry>
793	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0067r5.html">
794	P0067R5
795	</link>
796      </entry>
797      <entry align="center"> 11.1 (integral types supported since 8.1) </entry>
798      <entry><code> __has_include(&lt;charconv&gt;)</code>,
799             <code> __cpp_lib_to_chars >= 201611 </code></entry>
800    </row>
801
802    <row>
803      <entry> Homogeneous interface for variant, any and optional </entry>
804      <entry>
805	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf">
806	P0032R3
807	</link>
808      </entry>
809      <entry align="center"> 7.1  </entry>
810      <entry>
811             <code> __cpp_lib_any >= 201606 </code>,
812             <code> __cpp_lib_optional >= 201606 </code>,
813             <code> __cpp_lib_variant >= 201606 </code>
814      </entry>
815    </row>
816
817    <row>
818      <entry> Making Optional Greater Equal Again </entry>
819      <entry>
820	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf">
821	P0307R2
822	</link>
823      </entry>
824      <entry align="center"> 7.1  </entry>
825      <entry> <code> __cpp_lib_optional >= 201606 </code> </entry>
826    </row>
827
828  </tbody>
829</tgroup>
830</table>
831
832<para>
833Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the
834<code>__cpp_lib</code> macro is not defined, and compilation will fail if the
835header is included without using <option>-std</option> to enable C++17 support.
836</para>
837
838<para>
839Note 2: This feature is supported in older releases but the
840<code>__cpp_lib</code> macro is not defined to the right value
841(or not defined at all) until the version shown in parentheses.
842</para>
843
844<para>
845Note 3: The Parallel Algorithms have an external dependency on Intel TBB 2018
846or later. If the <filename class="headerfile">&lt;execution&gt;</filename>
847header is included then <code>-ltbb</code> must be used to link to TBB.
848</para>
849
850<para>
851Note 4: The mathematical special functions are enabled in C++17 mode from
852GCC 7.1 onwards. For GCC 6.x or for C++11/C++14 define
853<code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value
854and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>.
855</para>
856
857
858
859<para>
860The following status table is based on the table of contents of
861ISO/IEC 14882:2017.
862Some subclauses are not shown in the table where the content is unchanged
863since C++14 and the implementation is complete.
864</para>
865
866<table frame="all" xml:id="table.cxx17_status">
867<title>C++ 2017 Implementation Status</title>
868
869<tgroup cols="4" align="left" colsep="0" rowsep="1">
870<colspec colname="c1"/>
871<colspec colname="c2"/>
872<colspec colname="c3"/>
873<colspec colname="c4"/>
874  <thead>
875    <row>
876      <entry>Section</entry>
877      <entry>Description</entry>
878      <entry>Status</entry>
879      <entry>Comments</entry>
880    </row>
881  </thead>
882
883  <tbody>
884
885    <row>
886      <entry>
887	<emphasis>21</emphasis>
888      </entry>
889      <entry namest="c2" nameend="c4" align="left">
890	<emphasis>Language support</emphasis>
891      </entry>
892    </row>
893
894    <row>
895      <entry>21.1</entry>
896      <entry>General</entry>
897      <entry/>
898      <entry/>
899    </row>
900    <row>
901      <entry>21.2</entry>
902      <entry>Common definitions</entry>
903      <entry/>
904      <entry/>
905    </row>
906    <row>
907      <entry>21.3</entry>
908      <entry>Implementation properties</entry>
909      <entry/>
910      <entry/>
911    </row>
912    <row>
913      <entry>21.3.1</entry>
914      <entry>General</entry>
915      <entry/>
916      <entry/>
917    </row>
918    <row>
919      <entry>21.3.2</entry>
920      <entry>Header <code>&lt;limits&gt;</code> synopsis</entry>
921      <entry/>
922      <entry/>
923    </row>
924    <row>
925      <entry>21.3.3</entry>
926      <entry>Floating-point type properties</entry>
927      <entry/>
928      <entry/>
929    </row>
930    <row>
931      <?dbhtml bgcolor="#C8B0B0" ?>
932      <entry>21.3.3.1</entry>
933      <entry><code>float_round_style</code></entry>
934      <entry>N</entry>
935      <entry/>
936    </row>
937    <row>
938      <?dbhtml bgcolor="#C8B0B0" ?>
939      <entry>21.3.3.2</entry>
940      <entry><code>float_denorm_style</code></entry>
941      <entry>N</entry>
942      <entry/>
943    </row>
944    <row>
945      <entry>21.3.4</entry>
946      <entry>Class template <code>numeric_limits</code></entry>
947      <entry>Y</entry>
948      <entry/>
949    </row>
950    <row>
951      <entry>21.3.5</entry>
952      <entry>Header <code>&lt;climits&gt;</code> synopsis</entry>
953      <entry>Y</entry>
954      <entry/>
955    </row>
956    <row>
957      <entry>21.3.6</entry>
958      <entry>Header <code>&lt;cfloat&gt;</code> synopsis</entry>
959      <entry>Y</entry>
960      <entry/>
961    </row>
962    <row>
963      <entry>21.4</entry>
964      <entry>Integer types</entry>
965      <entry/>
966      <entry/>
967    </row>
968    <row>
969      <entry>21.4.1</entry>
970      <entry>Header <code>&lt;cstdint&gt;</code> synopsis</entry>
971      <entry>Y</entry>
972      <entry/>
973    </row>
974    <row>
975      <?dbhtml bgcolor="#B0B0B0" ?>
976      <entry>21.5</entry>
977      <entry>Start and termination</entry>
978      <entry>Partial</entry>
979      <entry>C library dependency for quick_exit, at_quick_exit</entry>
980    </row>
981    <row>
982      <entry>21.6</entry>
983      <entry>Dynamic memory management</entry>
984      <entry/>
985      <entry/>
986    </row>
987    <row>
988      <entry>21.6.1</entry>
989      <entry>Header <code>&lt;new&gt;</code> synopsis</entry>
990      <entry/>
991      <entry/>
992    </row>
993    <row>
994      <entry>21.6.2</entry>
995      <entry>Storage allocation and deallocation</entry>
996      <entry>Y</entry>
997      <entry/>
998    </row>
999    <row>
1000      <entry>21.6.3</entry>
1001      <entry>Storage allocation errors</entry>
1002      <entry>Y</entry>
1003      <entry/>
1004    </row>
1005    <row>
1006      <entry>21.6.4</entry>
1007      <entry>Pointer optimization barrier</entry>
1008      <entry>Y</entry>
1009      <entry/>
1010    </row>
1011    <row>
1012      <entry>21.6.5</entry>
1013      <entry>Hardware interference size</entry>
1014      <entry>Y</entry>
1015      <entry/>
1016    </row>
1017    <row>
1018      <entry>21.7</entry>
1019      <entry>Type identification</entry>
1020      <entry>Y</entry>
1021      <entry/>
1022    </row>
1023    <row>
1024      <entry>21.8</entry>
1025      <entry>Exception handling</entry>
1026      <entry/>
1027      <entry/>
1028    </row>
1029    <row>
1030      <entry>21.8.1</entry>
1031      <entry>Header <code>&lt;exception&gt;</code> synopsis</entry>
1032      <entry/>
1033      <entry/>
1034    </row>
1035    <row>
1036      <entry>21.8.2</entry>
1037      <entry>Class exception</entry>
1038      <entry>Y</entry>
1039      <entry/>
1040    </row>
1041    <row>
1042      <entry>21.8.3</entry>
1043      <entry>Class bad_exception</entry>
1044      <entry>Y</entry>
1045      <entry/>
1046    </row>
1047    <row>
1048      <entry>21.8.4</entry>
1049      <entry>Abnormal termination</entry>
1050      <entry>Y</entry>
1051      <entry/>
1052    </row>
1053    <row>
1054      <entry>21.8.5</entry>
1055      <entry><code>uncaught_exceptions</code></entry>
1056      <entry>Y</entry>
1057      <entry/>
1058    </row>
1059    <row>
1060      <entry>21.8.6</entry>
1061      <entry>Exception Propagation</entry>
1062      <entry>Y</entry>
1063      <entry/>
1064    </row>
1065    <row>
1066      <entry>21.8.7</entry>
1067      <entry><code>nested_exception</code></entry>
1068      <entry>Y</entry>
1069      <entry/>
1070    </row>
1071    <row>
1072      <entry>21.9</entry>
1073      <entry>Initializer lists</entry>
1074      <entry>Y</entry>
1075      <entry/>
1076    </row>
1077    <row>
1078      <entry>21.10</entry>
1079      <entry>Other runtime support</entry>
1080      <entry>Y</entry>
1081      <entry/>
1082    </row>
1083    <row>
1084      <entry>
1085	<emphasis>22</emphasis>
1086      </entry>
1087      <entry namest="c2" nameend="c4" align="left">
1088	<emphasis>Diagnostics</emphasis>
1089      </entry>
1090    </row>
1091    <row>
1092      <entry>22.1</entry>
1093      <entry>General</entry>
1094      <entry/>
1095      <entry/>
1096    </row>
1097    <row>
1098      <entry>22.2</entry>
1099      <entry>Exception classes</entry>
1100      <entry>Y</entry>
1101      <entry/>
1102    </row>
1103    <row>
1104      <entry>22.3</entry>
1105      <entry>Assertions</entry>
1106      <entry>Y</entry>
1107      <entry/>
1108    </row>
1109    <row>
1110      <entry>22.4</entry>
1111      <entry>Error numbers</entry>
1112      <entry>Y</entry>
1113      <entry/>
1114    </row>
1115    <row>
1116      <entry>22.5</entry>
1117      <entry>System error support</entry>
1118      <entry/>
1119      <entry/>
1120    </row>
1121    <row>
1122      <entry>
1123	<emphasis>23</emphasis>
1124      </entry>
1125      <entry namest="c2" nameend="c4" align="left">
1126	<emphasis>General utilities</emphasis>
1127      </entry>
1128    </row>
1129    <row>
1130      <entry>23.1</entry>
1131      <entry>General</entry>
1132      <entry/>
1133      <entry/>
1134    </row>
1135    <row>
1136      <entry>23.2</entry>
1137      <entry>Utility components</entry>
1138      <entry/>
1139      <entry/>
1140    </row>
1141    <row>
1142      <entry>23.2.1</entry>
1143      <entry>Header <code>&lt;utility&gt;</code> synopsis</entry>
1144      <entry/>
1145      <entry/>
1146    </row>
1147    <row>
1148      <entry>23.2.2</entry>
1149      <entry>Operators</entry>
1150      <entry>Y</entry>
1151      <entry/>
1152    </row>
1153    <row>
1154      <entry>23.2.3</entry>
1155      <entry><code>swap</code></entry>
1156      <entry>Y</entry>
1157      <entry/>
1158    </row>
1159    <row>
1160      <entry>23.2.4</entry>
1161      <entry><code>exchange</code></entry>
1162      <entry>Y</entry>
1163      <entry/>
1164    </row>
1165    <row>
1166      <entry>23.2.5</entry>
1167      <entry>Forward/move helpers</entry>
1168      <entry>Y</entry>
1169      <entry/>
1170    </row>
1171    <row>
1172      <entry>23.2.6</entry>
1173      <entry>Function template <code>as_const</code></entry>
1174      <entry>Y</entry>
1175      <entry/>
1176    </row>
1177    <row>
1178      <entry>23.2.7</entry>
1179      <entry>Function template <code>declval</code></entry>
1180      <entry>Y</entry>
1181      <entry/>
1182    </row>
1183    <row>
1184      <entry>23.2.8</entry>
1185      <entry>Primitive numeric output conversion</entry>
1186      <entry>Partial</entry>
1187      <entry/>
1188    </row>
1189    <row>
1190      <entry>23.2.9</entry>
1191      <entry>Primitive numeric input conversion</entry>
1192      <entry>Partial</entry>
1193      <entry/>
1194    </row>
1195    <row>
1196      <entry>23.3</entry>
1197      <entry>Compile-time integer sequences</entry>
1198      <entry/>
1199      <entry/>
1200    </row>
1201    <row>
1202      <entry>23.4</entry>
1203      <entry>Pairs</entry>
1204      <entry>Y</entry>
1205      <entry/>
1206    </row>
1207    <row>
1208      <entry>23.5</entry>
1209      <entry>Tuples</entry>
1210      <entry>Y</entry>
1211      <entry/>
1212    </row>
1213    <row>
1214      <entry>23.6</entry>
1215      <entry>Optional objects</entry>
1216      <entry>Y</entry>
1217      <entry/>
1218    </row>
1219    <row>
1220      <entry>23.7</entry>
1221      <entry>Variants</entry>
1222      <entry>Y</entry>
1223      <entry/>
1224    </row>
1225    <row>
1226      <entry>23.8</entry>
1227      <entry>Storage for any type</entry>
1228      <entry>Y</entry>
1229      <entry/>
1230    </row>
1231    <row>
1232      <entry>23.9</entry>
1233      <entry>Bitsets</entry>
1234      <entry>Y</entry>
1235      <entry/>
1236    </row>
1237    <row>
1238      <entry>23.10</entry>
1239      <entry>Memory</entry>
1240      <entry>Y</entry>
1241      <entry/>
1242    </row>
1243		<row>
1244      <entry>23.10.1</entry>
1245      <entry>In general</entry>
1246      <entry/>
1247      <entry/>
1248    </row>
1249		<row>
1250      <entry>23.10.2</entry>
1251      <entry>Header <code>&lt;memory&gt;</code> synopsis</entry>
1252      <entry>Y</entry>
1253      <entry/>
1254    </row>
1255		<row>
1256      <entry>23.10.3</entry>
1257      <entry>Pointer traits</entry>
1258      <entry>Y</entry>
1259      <entry/>
1260    </row>
1261		<row>
1262      <entry>23.10.4</entry>
1263      <entry>Pointer safety</entry>
1264      <entry>Y</entry>
1265      <entry/>
1266    </row>
1267		<row>
1268      <entry>23.10.5</entry>
1269      <entry>Align</entry>
1270      <entry>Y</entry>
1271      <entry/>
1272    </row>
1273		<row>
1274      <entry>23.10.6</entry>
1275      <entry>Allocator argument tag</entry>
1276      <entry>Y</entry>
1277      <entry/>
1278    </row>
1279		<row>
1280      <entry>23.10.7</entry>
1281      <entry><code>uses_allocator</code></entry>
1282      <entry>Y</entry>
1283      <entry/>
1284    </row>
1285		<row>
1286      <entry>23.10.8</entry>
1287      <entry>Allocator traits</entry>
1288      <entry>Y</entry>
1289      <entry/>
1290    </row>
1291		<row>
1292      <entry>23.10.9</entry>
1293      <entry>The default allocator</entry>
1294      <entry>Y</entry>
1295      <entry/>
1296    </row>
1297		<row>
1298      <entry>23.10.10</entry>
1299      <entry>Specialized algorithms</entry>
1300      <entry>Y</entry>
1301      <entry/>
1302    </row>
1303		<row>
1304      <entry>23.10.11</entry>
1305      <entry>C library memory allocation</entry>
1306      <entry>Y</entry>
1307      <entry/>
1308    </row>
1309    <row>
1310      <entry>23.11</entry>
1311      <entry>Smart pointers</entry>
1312      <entry/>
1313      <entry/>
1314    </row>
1315    <row>
1316      <entry>23.11.1</entry>
1317      <entry>Class template <code>unique_ptr</code></entry>
1318      <entry>Y</entry>
1319      <entry/>
1320    </row>
1321    <row>
1322      <entry>23.11.2</entry>
1323      <entry>Shared-ownership pointers</entry>
1324      <entry>Y</entry>
1325      <entry/>
1326    </row>
1327    <row>
1328      <entry>23.12</entry>
1329      <entry>Memory resources</entry>
1330      <entry/>
1331      <entry/>
1332    </row>
1333    <row>
1334      <entry>23.12.1</entry>
1335      <entry>Header <code>&lt;memory_resource&gt;</code> synopsis</entry>
1336      <entry>Y</entry>
1337      <entry/>
1338    </row>
1339    <row>
1340      <entry>23.12.2</entry>
1341      <entry>Class <code>memory_resource</code></entry>
1342      <entry>Y</entry>
1343      <entry/>
1344    </row>
1345    <row>
1346      <entry>23.12.3</entry>
1347      <entry>Class template <code>polymorphic_allocator</code></entry>
1348      <entry>Y</entry>
1349      <entry/>
1350    </row>
1351    <row>
1352      <entry>23.12.4</entry>
1353      <entry>Access to program-wide <code>memory_resource</code> objects</entry>
1354      <entry>Y</entry>
1355      <entry/>
1356    </row>
1357    <row>
1358      <entry>23.12.5</entry>
1359      <entry>Pool resource classes</entry>
1360      <entry>Y</entry>
1361      <entry/>
1362    </row>
1363    <row>
1364      <entry>23.12.6</entry>
1365      <entry>Class <code>monotonic_buffer_resource</code></entry>
1366      <entry>Y</entry>
1367      <entry/>
1368    </row>
1369    <row>
1370      <entry>23.13</entry>
1371      <entry>Class template <code>scoped_allocator_adaptor</code></entry>
1372      <entry>Y</entry>
1373      <entry/>
1374    </row>
1375    <row>
1376      <entry>23.14</entry>
1377      <entry>Function objects</entry>
1378      <entry/>
1379      <entry/>
1380    </row>
1381    <row>
1382      <entry>23.14.1</entry>
1383      <entry>Header <code>&lt;functional&gt;</code> synopsis</entry>
1384      <entry/>
1385      <entry/>
1386    </row>
1387    <row>
1388      <entry>23.14.2</entry>
1389      <entry>Definitions</entry>
1390      <entry/>
1391      <entry/>
1392    </row>
1393    <row>
1394      <entry>23.14.3</entry>
1395      <entry>Requirements</entry>
1396      <entry/>
1397      <entry/>
1398    </row>
1399    <row>
1400      <entry>23.14.4</entry>
1401      <entry>Function template <code>invoke</code></entry>
1402      <entry>Y</entry>
1403      <entry/>
1404    </row>
1405    <row>
1406      <entry>23.14.5</entry>
1407      <entry>Class template <code>reference_wrapper</code></entry>
1408      <entry>Y</entry>
1409      <entry/>
1410    </row>
1411    <row>
1412      <entry>23.14.6</entry>
1413      <entry>Arithmetic operation</entry>
1414      <entry>Y</entry>
1415      <entry/>
1416    </row>
1417    <row>
1418      <entry>23.14.7</entry>
1419      <entry>Comparisons</entry>
1420      <entry>Y</entry>
1421      <entry/>
1422    </row>
1423    <row>
1424      <entry>23.14.8</entry>
1425      <entry>Logical operations</entry>
1426      <entry>Y</entry>
1427      <entry/>
1428    </row>
1429    <row>
1430      <entry>23.14.9</entry>
1431      <entry>Bitwise operations</entry>
1432      <entry>Y</entry>
1433      <entry/>
1434    </row>
1435    <row>
1436      <entry>23.14.10</entry>
1437      <entry>Function template <code>not_fn</code></entry>
1438      <entry>Y</entry>
1439      <entry/>
1440    </row>
1441    <row>
1442      <entry>23.14.11</entry>
1443      <entry>Function object binders</entry>
1444      <entry>Y</entry>
1445      <entry/>
1446    </row>
1447    <row>
1448      <entry>23.14.12</entry>
1449      <entry>Function template <code>mem_fn</code></entry>
1450      <entry>Y</entry>
1451      <entry/>
1452    </row>
1453    <row>
1454      <entry>23.14.13</entry>
1455      <entry>Polymorphic function wrappers</entry>
1456      <entry>Y</entry>
1457      <entry/>
1458    </row>
1459    <row>
1460      <entry>23.14.14</entry>
1461      <entry>Searchers</entry>
1462      <entry>Y</entry>
1463      <entry/>
1464    </row>
1465    <row>
1466      <entry>23.14.15</entry>
1467      <entry>Class template <code>hash</code></entry>
1468      <entry>Y</entry>
1469      <entry/>
1470    </row>
1471    <row>
1472      <entry>23.15</entry>
1473      <entry>Metaprogramming and type traits</entry>
1474      <entry/>
1475      <entry/>
1476    </row>
1477    <row>
1478      <entry>23.15.1</entry>
1479      <entry>Requirements</entry>
1480      <entry/>
1481      <entry/>
1482    </row>
1483    <row>
1484      <entry>23.15.2</entry>
1485      <entry>Header <code>&lt;type_traits&gt;</code> synopsis</entry>
1486      <entry>Y</entry>
1487      <entry/>
1488    </row>
1489    <row>
1490      <entry>23.15.3</entry>
1491      <entry>Helper classes</entry>
1492      <entry>Y</entry>
1493      <entry/>
1494    </row>
1495    <row>
1496      <entry>23.15.4</entry>
1497      <entry>Unary Type Traits</entry>
1498      <entry>Y</entry>
1499      <entry/>
1500    </row>
1501    <row>
1502      <entry>23.15.5</entry>
1503      <entry>Type property queries</entry>
1504      <entry>Y</entry>
1505      <entry/>
1506    </row>
1507    <row>
1508      <entry>23.15.6</entry>
1509      <entry>Relationships between types</entry>
1510      <entry>Y</entry>
1511      <entry/>
1512    </row>
1513    <row>
1514      <entry>23.15.7</entry>
1515      <entry>Transformations between types</entry>
1516      <entry>Y</entry>
1517      <entry/>
1518    </row>
1519    <row>
1520      <entry>23.15.8</entry>
1521      <entry>Logical operator traits</entry>
1522      <entry>Y</entry>
1523      <entry/>
1524    </row>
1525    <row>
1526      <entry>23.16</entry>
1527      <entry>Compile-time rational arithmetic</entry>
1528      <entry>Y</entry>
1529      <entry/>
1530    </row>
1531    <row>
1532      <entry>23.17.1</entry>
1533      <entry>In general</entry>
1534      <entry/>
1535      <entry/>
1536    </row>
1537    <row>
1538      <entry>23.17.2</entry>
1539      <entry>Header <code>&lt;chrono&gt;</code> synopsis</entry>
1540      <entry/>
1541      <entry/>
1542    </row>
1543    <row>
1544      <entry>23.17</entry>
1545      <entry>Time utilities</entry>
1546      <entry/>
1547      <entry/>
1548    </row>
1549    <row>
1550      <entry>23.17.3</entry>
1551      <entry>Clock requirements</entry>
1552      <entry>Y</entry>
1553      <entry/>
1554    </row>
1555    <row>
1556      <entry>23.17.4</entry>
1557      <entry>Time-related traits</entry>
1558      <entry>Y</entry>
1559      <entry/>
1560    </row>
1561    <row>
1562      <entry>23.17.5</entry>
1563      <entry>Class template <code>duration</code></entry>
1564      <entry>Y</entry>
1565      <entry/>
1566    </row>
1567    <row>
1568      <entry>23.17.6</entry>
1569      <entry>Class template <code>time_point</code></entry>
1570      <entry>Y</entry>
1571      <entry/>
1572    </row>
1573    <row>
1574      <entry>23.17.7</entry>
1575      <entry>Clocks</entry>
1576      <entry>Y</entry>
1577      <entry/>
1578    </row>
1579    <row>
1580      <entry>23.17.8</entry>
1581      <entry>Header <code>&lt;ctime&gt;</code> synopsis</entry>
1582      <entry>Y</entry>
1583      <entry/>
1584    </row>
1585    <row>
1586      <entry>23.18</entry>
1587      <entry>Class <code>type_index</code></entry>
1588      <entry>Y</entry>
1589      <entry/>
1590    </row>
1591    <row>
1592      <entry>23.19</entry>
1593      <entry>Execution policies</entry>
1594      <entry/>
1595      <entry/>
1596    </row>
1597    <row>
1598      <entry>23.19.1</entry>
1599      <entry>In general</entry>
1600      <entry/>
1601      <entry/>
1602    </row>
1603    <row>
1604      <entry>23.19.2</entry>
1605      <entry>Header <code>&lt;execution&gt;</code> synopsis</entry>
1606      <entry/>
1607      <entry/>
1608    </row>
1609    <row>
1610      <entry>23.19.3</entry>
1611      <entry>Execution policy type trait</entry>
1612      <entry>Y</entry>
1613      <entry/>
1614    </row>
1615    <row>
1616      <entry>23.19.4</entry>
1617      <entry>Sequenced execution policy</entry>
1618      <entry>Y</entry>
1619      <entry/>
1620    </row>
1621    <row>
1622      <entry>23.19.5</entry>
1623      <entry>Parallel execution policy</entry>
1624      <entry>Y</entry>
1625      <entry/>
1626    </row>
1627    <row>
1628      <entry>23.19.6</entry>
1629      <entry>Parallel and unsequenced execution policy</entry>
1630      <entry>Y</entry>
1631      <entry/>
1632    </row>
1633    <row>
1634      <entry>23.19.7</entry>
1635      <entry>Execution policy objects</entry>
1636      <entry>Y</entry>
1637      <entry/>
1638    </row>
1639    <row>
1640      <entry>
1641	<emphasis>24</emphasis>
1642      </entry>
1643      <entry namest="c2" nameend="c4" align="left">
1644	<emphasis>Strings</emphasis>
1645      </entry>
1646    </row>
1647    <row>
1648      <entry>24.1</entry>
1649      <entry>General</entry>
1650      <entry/>
1651      <entry/>
1652    </row>
1653    <row>
1654      <entry>24.2</entry>
1655      <entry>Character traits</entry>
1656      <entry>Y</entry>
1657      <entry/>
1658    </row>
1659    <row>
1660      <entry>24.3</entry>
1661      <entry>String classes</entry>
1662      <entry>Y</entry>
1663      <entry/>
1664    </row>
1665    <row>
1666      <entry>24.4</entry>
1667      <entry>String view classes</entry>
1668      <entry>Y</entry>
1669      <entry/>
1670    </row>
1671    <row>
1672      <entry>24.4.1</entry>
1673      <entry>Header <code>&lt;string_view&gt;</code> synopsis</entry>
1674      <entry>Y</entry>
1675      <entry/>
1676    </row>
1677    <row>
1678      <entry>24.4.2</entry>
1679      <entry>Class template <code>basic_string_view</code></entry>
1680      <entry>Y</entry>
1681      <entry/>
1682    </row>
1683    <row>
1684      <entry>24.4.3</entry>
1685      <entry>Non-member comparison functions</entry>
1686      <entry>Y</entry>
1687      <entry/>
1688    </row>
1689    <row>
1690      <entry>24.4.4</entry>
1691      <entry>Inserters and extractors</entry>
1692      <entry>Y</entry>
1693      <entry/>
1694    </row>
1695    <row>
1696      <entry>24.4.5</entry>
1697      <entry>Hash support</entry>
1698      <entry>Y</entry>
1699      <entry/>
1700    </row>
1701    <row>
1702      <entry>24.4.6</entry>
1703      <entry>Suffix for <code>basic_string_view</code> literals</entry>
1704      <entry>Y</entry>
1705      <entry/>
1706    </row>
1707    <row>
1708      <?dbhtml bgcolor="#B0B0B0" ?>
1709      <entry>24.5</entry>
1710      <entry>Null-terminated sequence utilities</entry>
1711      <entry>Partial</entry>
1712      <entry>C library dependency. </entry>
1713    </row>
1714    <row>
1715      <entry>
1716	<emphasis>25</emphasis>
1717      </entry>
1718      <entry namest="c2" nameend="c4" align="left">
1719	<emphasis>Localization</emphasis>
1720      </entry>
1721    </row>
1722    <row>
1723      <entry>25.1</entry>
1724      <entry>General</entry>
1725      <entry>Y</entry>
1726      <entry/>
1727    </row>
1728    <row>
1729      <entry>25.2</entry>
1730      <entry>Header <code>&lt;locale&gt;</code> synopsis</entry>
1731      <entry>Y</entry>
1732      <entry/>
1733    </row>
1734    <row>
1735      <entry>25.3</entry>
1736      <entry>Locales</entry>
1737      <entry>Y</entry>
1738      <entry/>
1739    </row>
1740    <row>
1741      <entry>25.4</entry>
1742      <entry>Standard <code>locale</code> categories</entry>
1743      <entry>Y</entry>
1744      <entry/>
1745    </row>
1746    <row>
1747      <entry>25.5</entry>
1748      <entry>C Library Locales</entry>
1749      <entry>Y</entry>
1750      <entry/>
1751    </row>
1752    <row>
1753      <entry>
1754	<emphasis>26</emphasis>
1755      </entry>
1756      <entry namest="c2" nameend="c4" align="left">
1757	<emphasis>Containers</emphasis>
1758      </entry>
1759    </row>
1760    <row>
1761      <entry>26.1</entry>
1762      <entry>General</entry>
1763      <entry/>
1764      <entry/>
1765    </row>
1766    <row>
1767      <entry>26.2</entry>
1768      <entry>Container requirements</entry>
1769      <entry>Y</entry>
1770      <entry/>
1771    </row>
1772    <row>
1773      <entry>26.3</entry>
1774      <entry>Sequence containers</entry>
1775      <entry>Y</entry>
1776      <entry/>
1777    </row>
1778    <row>
1779      <entry>26.4</entry>
1780      <entry>Associative containers</entry>
1781      <entry>Y</entry>
1782      <entry/>
1783    </row>
1784    <row>
1785      <entry>26.5</entry>
1786      <entry>Unordered associative containers</entry>
1787      <entry>Y</entry>
1788      <entry/>
1789    </row>
1790    <row>
1791      <entry>26.6</entry>
1792      <entry>Container adaptors</entry>
1793      <entry>Y</entry>
1794      <entry/>
1795    </row>
1796    <row>
1797      <entry>
1798	<emphasis>27</emphasis>
1799      </entry>
1800      <entry namest="c2" nameend="c4" align="left">
1801	<emphasis>Iterators</emphasis>
1802      </entry>
1803    </row>
1804    <row>
1805      <entry>27.1</entry>
1806      <entry>General</entry>
1807      <entry>Y</entry>
1808      <entry/>
1809    </row>
1810    <row>
1811      <entry>27.2</entry>
1812      <entry>Iterator requirements</entry>
1813      <entry>Y</entry>
1814      <entry/>
1815    </row>
1816    <row>
1817      <entry>27.3</entry>
1818      <entry>Header <code>&lt;iterator&gt;</code> synopsis</entry>
1819      <entry>Y</entry>
1820      <entry/>
1821    </row>
1822    <row>
1823      <entry>27.4</entry>
1824      <entry>Iterator primitives</entry>
1825      <entry>Y</entry>
1826      <entry/>
1827    </row>
1828    <row>
1829      <entry>27.5</entry>
1830      <entry>Iterator adaptors</entry>
1831      <entry>Y</entry>
1832      <entry/>
1833    </row>
1834    <row>
1835      <entry>27.6</entry>
1836      <entry>Stream iterators</entry>
1837      <entry>Y</entry>
1838      <entry/>
1839    </row>
1840    <row>
1841      <entry>27.7</entry>
1842      <entry>Range access</entry>
1843      <entry>Y</entry>
1844      <entry/>
1845    </row>
1846    <row>
1847      <entry>27.8</entry>
1848      <entry>Container access</entry>
1849      <entry>Y</entry>
1850      <entry/>
1851    </row>
1852    <row>
1853      <entry>
1854	<emphasis>28</emphasis>
1855      </entry>
1856      <entry namest="c2" nameend="c4" align="left">
1857	<emphasis>Algorithms</emphasis>
1858      </entry>
1859    </row>
1860    <row>
1861      <entry>28.1</entry>
1862      <entry>General</entry>
1863      <entry/>
1864      <entry/>
1865    </row>
1866    <row>
1867      <entry>28.2</entry>
1868      <entry>Header <code>&lt;algorithm&gt;</code> synopsis</entry>
1869      <entry/>
1870      <entry/>
1871    </row>
1872    <row>
1873      <entry>28.3</entry>
1874      <entry>Algorithms requirements</entry>
1875      <entry/>
1876      <entry/>
1877    </row>
1878    <row>
1879      <entry>28.4</entry>
1880      <entry>Parallel algorithms</entry>
1881      <entry/>
1882      <entry>Using <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://github.com/llvm/llvm-project/tree/main/pstl">PSTL</link></entry>
1883    </row>
1884    <row>
1885      <entry>28.5</entry>
1886      <entry>Non-modifying sequence operations</entry>
1887      <entry>Y</entry>
1888      <entry/>
1889    </row>
1890    <row>
1891      <entry>28.6</entry>
1892      <entry>Mutating sequence operations</entry>
1893      <entry>Y</entry>
1894      <entry/>
1895    </row>
1896    <row>
1897      <entry>28.7</entry>
1898      <entry>Sorting and related operations</entry>
1899      <entry>Y</entry>
1900      <entry/>
1901    </row>
1902    <row>
1903      <entry>28.8</entry>
1904      <entry>C library algorithms</entry>
1905      <entry>Y</entry>
1906      <entry/>
1907    </row>
1908    <row>
1909      <entry>
1910      <emphasis>29</emphasis>
1911      </entry>
1912      <entry namest="c2" nameend="c4" align="left">
1913	<emphasis>Numerics</emphasis>
1914      </entry>
1915    </row>
1916    <row>
1917      <entry>29.1</entry>
1918      <entry>General</entry>
1919      <entry/>
1920      <entry/>
1921    </row>
1922    <row>
1923      <entry>29.2</entry>
1924      <entry>Definitions</entry>
1925      <entry/>
1926      <entry/>
1927    </row>
1928    <row>
1929      <entry>29.3</entry>
1930      <entry>Numeric type requirements</entry>
1931      <entry>Y</entry>
1932      <entry/>
1933    </row>
1934    <row>
1935      <entry>29.4</entry>
1936      <entry>The floating-point environment</entry>
1937      <entry>Y</entry>
1938      <entry/>
1939    </row>
1940    <row>
1941      <entry>29.5</entry>
1942      <entry>Complex numbers</entry>
1943      <entry>Y</entry>
1944      <entry/>
1945    </row>
1946    <row>
1947      <entry>29.6</entry>
1948      <entry>Random number generation</entry>
1949      <entry>Y</entry>
1950      <entry/>
1951    </row>
1952    <row>
1953      <entry>29.7</entry>
1954      <entry>Numeric arrays</entry>
1955      <entry>Y</entry>
1956      <entry/>
1957    </row>
1958    <row>
1959      <entry>29.8</entry>
1960      <entry>Generalized numeric operations</entry>
1961      <entry/>
1962      <entry/>
1963    </row>
1964    <row>
1965      <entry>29.8.1</entry>
1966      <entry>Header <code>&lt;numeric&gt;</code> synopsis</entry>
1967      <entry/>
1968      <entry/>
1969    </row>
1970    <row>
1971      <entry>29.8.2</entry>
1972      <entry>Accumulate</entry>
1973      <entry>Y</entry>
1974      <entry/>
1975    </row>
1976    <row>
1977      <entry>29.8.3</entry>
1978      <entry>Reduce</entry>
1979      <entry>Y</entry>
1980      <entry/>
1981    </row>
1982    <row>
1983      <entry>29.8.4</entry>
1984      <entry>Inner product</entry>
1985      <entry>Y</entry>
1986      <entry/>
1987    </row>
1988    <row>
1989      <entry>29.8.5</entry>
1990      <entry>Transform reduce</entry>
1991      <entry>Y</entry>
1992      <entry/>
1993    </row>
1994    <row>
1995      <entry>29.8.6</entry>
1996      <entry>Partial sum</entry>
1997      <entry>Y</entry>
1998      <entry/>
1999    </row>
2000    <row>
2001      <entry>29.8.7</entry>
2002      <entry>Exclusive scan</entry>
2003      <entry>Y</entry>
2004      <entry/>
2005    </row>
2006    <row>
2007      <entry>29.8.8</entry>
2008      <entry>Inclusive scan</entry>
2009      <entry>Y</entry>
2010      <entry/>
2011    </row>
2012    <row>
2013      <entry>29.8.9</entry>
2014      <entry>Transform exclusive scan</entry>
2015      <entry>Y</entry>
2016      <entry/>
2017    </row>
2018    <row>
2019      <entry>29.8.10</entry>
2020      <entry>Transform inclusive scan</entry>
2021      <entry>Y</entry>
2022      <entry/>
2023    </row>
2024    <row>
2025      <entry>29.8.11</entry>
2026      <entry>Adjacent difference</entry>
2027      <entry>Y</entry>
2028      <entry/>
2029    </row>
2030    <row>
2031      <entry>29.8.12</entry>
2032      <entry>Iota</entry>
2033      <entry>Y</entry>
2034      <entry/>
2035    </row>
2036    <row>
2037      <entry>29.8.13</entry>
2038      <entry>Greatest common divisor</entry>
2039      <entry>Y</entry>
2040      <entry/>
2041    </row>
2042    <row>
2043      <entry>29.8.14</entry>
2044      <entry>Least common multiple</entry>
2045      <entry>Y</entry>
2046      <entry/>
2047    </row>
2048    <row>
2049      <entry>29.9</entry>
2050      <entry>Mathematical functions for floating-point types</entry>
2051      <entry/>
2052      <entry/>
2053    </row>
2054    <row>
2055      <entry>29.9.1</entry>
2056      <entry>Header <code>&lt;cmath&gt;</code> synopsis</entry>
2057      <entry/>
2058      <entry/>
2059    </row>
2060    <row>
2061      <entry>29.9.2</entry>
2062      <entry>Absolute values</entry>
2063      <entry>Y</entry>
2064      <entry/>
2065    </row>
2066    <row>
2067      <entry>29.9.3</entry>
2068      <entry>Three-dimensional hypotenuse</entry>
2069      <entry>Y</entry>
2070      <entry/>
2071    </row>
2072    <row>
2073      <entry>29.9.4</entry>
2074      <entry>Classification / comparison functions</entry>
2075      <entry>Y</entry>
2076      <entry/>
2077    </row>
2078    <row>
2079      <entry>29.9.5</entry>
2080      <entry>Mathematical special functions</entry>
2081      <entry>Y</entry>
2082      <entry/>
2083    </row>
2084    <row>
2085      <entry>
2086	<emphasis>30</emphasis>
2087      </entry>
2088      <entry namest="c2" nameend="c4" align="left">
2089	<emphasis>Input/output library</emphasis>
2090      </entry>
2091    </row>
2092    <row>
2093      <entry>30.1</entry>
2094      <entry>General</entry>
2095      <entry>Y</entry>
2096      <entry/>
2097    </row>
2098    <row>
2099      <entry>30.2</entry>
2100      <entry>Iostreams requirements</entry>
2101      <entry>Y</entry>
2102      <entry/>
2103    </row>
2104    <row>
2105      <entry>30.2.1</entry>
2106      <entry>Imbue Limitations</entry>
2107      <entry>Y</entry>
2108      <entry/>
2109    </row>
2110    <row>
2111      <entry>30.2.2</entry>
2112      <entry>Positioning Type Limitations</entry>
2113      <entry>Y</entry>
2114      <entry/>
2115    </row>
2116    <row>
2117      <?dbhtml bgcolor="#B0B0B0" ?>
2118      <entry>30.2.3</entry>
2119      <entry>Thread safety</entry>
2120      <entry>Partial</entry>
2121      <entry/>
2122    </row>
2123    <row>
2124      <entry>30.3</entry>
2125      <entry>Forward declarations</entry>
2126      <entry>Y</entry>
2127      <entry/>
2128    </row>
2129    <row>
2130      <entry>30.4</entry>
2131      <entry>Standard iostream objects</entry>
2132      <entry>Y</entry>
2133      <entry/>
2134    </row>
2135    <row>
2136      <entry>30.5</entry>
2137      <entry>Iostreams base classes</entry>
2138      <entry>Y</entry>
2139      <entry/>
2140    </row>
2141    <row>
2142      <entry>30.6</entry>
2143      <entry>Stream buffers</entry>
2144      <entry>Y</entry>
2145      <entry/>
2146    </row>
2147    <row>
2148      <entry>30.7</entry>
2149      <entry>Formatting and manipulators</entry>
2150      <entry>Y</entry>
2151      <entry/>
2152    </row>
2153    <row>
2154      <entry>30.8</entry>
2155      <entry>String-based streams</entry>
2156      <entry>Y</entry>
2157      <entry/>
2158    </row>
2159    <row>
2160      <entry>30.9</entry>
2161      <entry>File-based streams</entry>
2162      <entry>Y</entry>
2163      <entry/>
2164    </row>
2165    <row>
2166      <entry>30.10</entry>
2167      <entry>File systemss</entry>
2168      <entry>Y</entry>
2169      <entry/>
2170    </row>
2171    <row>
2172      <entry>30.11</entry>
2173      <entry>C library files</entry>
2174      <entry>Y</entry>
2175      <entry/>
2176    </row>
2177    <row>
2178      <entry>
2179	<emphasis>31</emphasis>
2180      </entry>
2181      <entry namest="c2" nameend="c4" align="left">
2182	<emphasis>Regular expressions</emphasis>
2183      </entry>
2184    </row>
2185    <row>
2186      <entry>31.1</entry>
2187      <entry>General</entry>
2188      <entry>Y</entry>
2189      <entry/>
2190    </row>
2191    <row>
2192      <entry>31.2</entry>
2193      <entry>Definitions</entry>
2194      <entry>Y</entry>
2195      <entry/>
2196    </row>
2197    <row>
2198      <entry>31.3</entry>
2199      <entry>Requirements</entry>
2200      <entry>Y</entry>
2201      <entry/>
2202    </row>
2203    <row>
2204      <entry>31.4</entry>
2205      <entry>Header <code>&lt;regex&gt;</code> synopsis</entry>
2206      <entry>Y</entry>
2207      <entry/>
2208    </row>
2209    <row>
2210      <entry>31.5</entry>
2211      <entry>Namespace <code>std::regex_constants</code></entry>
2212      <entry>Y</entry>
2213      <entry/>
2214    </row>
2215    <row>
2216      <entry>31.6</entry>
2217      <entry>Class <code>regex_error</code></entry>
2218      <entry>Y</entry>
2219      <entry/>
2220    </row>
2221    <row>
2222      <?dbhtml bgcolor="#B0B0B0" ?>
2223      <entry>31.7</entry>
2224      <entry>Class template <code>regex_traits</code></entry>
2225      <entry>Partial</entry>
2226      <entry><code>transform_primary</code> is not correctly implemented</entry>
2227    </row>
2228    <row>
2229      <entry>31.8</entry>
2230      <entry>Class template <code>basic_regex</code></entry>
2231      <entry>Y</entry>
2232      <entry/>
2233    </row>
2234    <row>
2235      <entry>31.9</entry>
2236      <entry>Class template <code>sub_match</code></entry>
2237      <entry>Y</entry>
2238      <entry/>
2239    </row>
2240    <row>
2241      <entry>31.10</entry>
2242      <entry>Class template <code>match_results</code></entry>
2243      <entry>Y</entry>
2244      <entry/>
2245    </row>
2246    <row>
2247      <entry>31.11</entry>
2248      <entry>Regular expression algorithms</entry>
2249      <entry>Y</entry>
2250      <entry/>
2251    </row>
2252    <row>
2253      <entry>31.12</entry>
2254      <entry>Regular expression Iterators</entry>
2255      <entry>Y</entry>
2256      <entry/>
2257    </row>
2258    <row>
2259      <entry>31.13</entry>
2260      <entry>Modified ECMAScript regular expression grammar</entry>
2261      <entry>Y</entry>
2262      <entry/>
2263    </row>
2264    <row>
2265      <entry>
2266	<emphasis>32</emphasis>
2267      </entry>
2268      <entry namest="c2" nameend="c4" align="left">
2269	<emphasis>Atomic operations</emphasis>
2270      </entry>
2271    </row>
2272    <row>
2273      <entry>32.1</entry>
2274      <entry>General</entry>
2275      <entry>Y</entry>
2276      <entry/>
2277    </row>
2278    <row>
2279      <entry>32.2</entry>
2280      <entry>Header <code>&lt;atomic&gt;</code> synopsis</entry>
2281      <entry>Y</entry>
2282      <entry/>
2283    </row>
2284    <row>
2285      <entry>32.3</entry>
2286      <entry>Type aliases</entry>
2287      <entry>Y</entry>
2288      <entry/>
2289    </row>
2290    <row>
2291      <entry>32.4</entry>
2292      <entry>Order and consistency</entry>
2293      <entry>Y</entry>
2294      <entry/>
2295    </row>
2296    <row>
2297      <entry>32.5</entry>
2298      <entry>Lock-free property</entry>
2299      <entry>Y</entry>
2300      <entry/>
2301    </row>
2302    <row>
2303      <entry>32.6</entry>
2304      <entry>Class template <code>&lt;atomic&gt;</code></entry>
2305      <entry>Y</entry>
2306      <entry/>
2307    </row>
2308    <row>
2309      <entry>32.7</entry>
2310      <entry>Non-member functions</entry>
2311      <entry>Y</entry>
2312      <entry/>
2313    </row>
2314    <row>
2315      <entry>32.8</entry>
2316      <entry>Flag Type and operations</entry>
2317      <entry>Y</entry>
2318      <entry/>
2319    </row>
2320    <row>
2321      <entry>32.9</entry>
2322      <entry>Fences</entry>
2323      <entry>Y</entry>
2324      <entry/>
2325    </row>
2326    <row>
2327      <entry>
2328	<emphasis>33</emphasis>
2329      </entry>
2330      <entry namest="c2" nameend="c4" align="left">
2331	<emphasis>Thread support</emphasis>
2332      </entry>
2333    </row>
2334    <row>
2335      <entry>33.1</entry>
2336      <entry>General</entry>
2337      <entry>Y</entry>
2338      <entry/>
2339    </row>
2340    <row>
2341      <entry>33.2</entry>
2342      <entry>Requirements</entry>
2343      <entry>Y</entry>
2344      <entry/>
2345    </row>
2346    <row>
2347      <entry>33.3</entry>
2348      <entry>Threads</entry>
2349      <entry/>
2350      <entry/>
2351    </row>
2352    <row>
2353      <entry>33.3.1</entry>
2354      <entry>Header <code>thread</code> synopsis</entry>
2355      <entry/>
2356      <entry/>
2357    </row>
2358    <row>
2359      <entry>33.3.2</entry>
2360      <entry>Class <code>thread</code></entry>
2361      <entry>Y</entry>
2362      <entry/>
2363    </row>
2364    <row>
2365      <?dbhtml bgcolor="#B0B0B0" ?>
2366      <entry>33.3.2.1</entry>
2367      <entry>Class <code>thread</code></entry>
2368      <entry>Partial</entry>
2369      <entry><code>thread::id</code> comparisons not well-defined</entry>
2370    </row>
2371    <row>
2372      <entry>33.3.3</entry>
2373      <entry>Namespace <code>this_thread</code></entry>
2374      <entry>Y</entry>
2375      <entry/>
2376    </row>
2377    <row>
2378      <entry>33.4</entry>
2379      <entry>Mutual exclusion</entry>
2380      <entry/>
2381      <entry/>
2382    </row>
2383    <row>
2384      <entry>33.4.3</entry>
2385      <entry>Mutex requirements</entry>
2386      <entry/>
2387      <entry/>
2388    </row>
2389    <row>
2390      <entry>33.4.3.1</entry>
2391      <entry>In general</entry>
2392      <entry/>
2393      <entry/>
2394    </row>
2395    <row>
2396      <entry>33.4.3.2</entry>
2397      <entry>Mutex types</entry>
2398      <entry/>
2399      <entry/>
2400    </row>
2401    <row>
2402      <entry>33.4.3.2.1</entry>
2403      <entry>Class <code>mutex</code></entry>
2404      <entry>Y</entry>
2405      <entry/>
2406    </row>
2407    <row>
2408      <entry>33.4.3.2.2</entry>
2409      <entry>Class <code>recursive_mutex</code></entry>
2410      <entry>Y</entry>
2411      <entry/>
2412    </row>
2413    <row>
2414      <entry>33.4.3.3</entry>
2415      <entry>Timed mutex types</entry>
2416      <entry/>
2417      <entry/>
2418    </row>
2419    <row>
2420      <entry>33.4.3.3.1</entry>
2421      <entry>Class <code>timed_mutex</code></entry>
2422      <entry>Y</entry>
2423      <entry/>
2424    </row>
2425    <row>
2426      <entry>33.4.3.3.2</entry>
2427      <entry>Class <code>recursive_timed_mutex</code></entry>
2428      <entry>Y</entry>
2429      <entry/>
2430    </row>
2431    <row>
2432      <entry>33.4.3.4</entry>
2433      <entry>Shared mutex types</entry>
2434      <entry/>
2435      <entry/>
2436    </row>
2437    <row>
2438      <entry>33.4.3.4.1</entry>
2439      <entry>Class <code>shared_mutex</code></entry>
2440      <entry>Y</entry>
2441      <entry/>
2442    </row>
2443    <row>
2444      <entry>33.4.3.5</entry>
2445      <entry>Shared timed mutex types</entry>
2446      <entry/>
2447      <entry/>
2448    </row>
2449    <row>
2450      <entry>33.4.3.5.1</entry>
2451      <entry>Class <code>shared_timed_mutex</code></entry>
2452      <entry>Y</entry>
2453      <entry/>
2454    </row>
2455    <row>
2456      <entry>33.4.4</entry>
2457      <entry>Locks</entry>
2458      <entry/>
2459      <entry/>
2460    </row>
2461    <row>
2462      <entry>33.4.4.1</entry>
2463      <entry>Class template <code>lock_guard</code></entry>
2464      <entry>Y</entry>
2465      <entry/>
2466    </row>
2467    <row>
2468      <entry>33.4.4.2</entry>
2469      <entry>Class template <code>scoped_guard</code></entry>
2470      <entry>Y</entry>
2471      <entry/>
2472    </row>
2473    <row>
2474      <entry>33.4.4.3</entry>
2475      <entry>Class template <code>unique_lock</code></entry>
2476      <entry>Y</entry>
2477      <entry/>
2478    </row>
2479    <row>
2480      <entry>33.4.4.4</entry>
2481      <entry>Class template <code>shared_lock</code></entry>
2482      <entry>Y</entry>
2483      <entry/>
2484    </row>
2485    <row>
2486      <entry>33.4.5</entry>
2487      <entry>Generic locking algorithms</entry>
2488      <entry>Y</entry>
2489      <entry/>
2490    </row>
2491    <row>
2492      <entry>33.4.6</entry>
2493      <entry>Call once</entry>
2494      <entry/>
2495      <entry/>
2496    </row>
2497    <row>
2498      <entry>33.4.6.1</entry>
2499      <entry>Struct <code>once_flag</code></entry>
2500      <entry>Y</entry>
2501      <entry/>
2502    </row>
2503    <row>
2504      <?dbhtml bgcolor="#B0B0B0" ?>
2505      <entry>33.4.6.2</entry>
2506      <entry>Function <code>call_once</code></entry>
2507      <entry>Y</entry>
2508      <entry>Exception support is broken on non-Linux targets.
2509	See <link xmlns:xlink="http://www.w3.org/1999/xlink"
2510	xlink:href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146">PR
2511	66146</link>.
2512      </entry>
2513    </row>
2514    <row>
2515      <entry>33.5</entry>
2516      <entry>Condition variables</entry>
2517      <entry>Y</entry>
2518      <entry/>
2519    </row>
2520    <row>
2521      <entry>33.5.1</entry>
2522      <entry>Class <code>condition_variable</code></entry>
2523      <entry>Y</entry>
2524      <entry/>
2525    </row>
2526    <row>
2527      <entry>33.5.2</entry>
2528      <entry>Class <code>condition_variable_any</code></entry>
2529      <entry>Y</entry>
2530      <entry/>
2531    </row>
2532    <row>
2533      <entry>33.6</entry>
2534      <entry>Futures</entry>
2535      <entry/>
2536      <entry/>
2537    </row>
2538    <row>
2539      <entry>33.6.1</entry>
2540      <entry>Overview</entry>
2541      <entry/>
2542      <entry/>
2543    </row>
2544    <row>
2545      <entry>33.6.2</entry>
2546      <entry>Header <code>&lt;future&gt;</code></entry>
2547      <entry/>
2548      <entry/>
2549    </row>
2550    <row>
2551      <entry>33.6.3</entry>
2552      <entry>Error handling</entry>
2553      <entry>Y</entry>
2554      <entry/>
2555    </row>
2556    <row>
2557      <entry>33.6.4</entry>
2558      <entry>Class <code>future_error</code></entry>
2559      <entry>Y</entry>
2560      <entry/>
2561    </row>
2562    <row>
2563      <entry>33.6.5</entry>
2564      <entry>Shared state</entry>
2565      <entry>Y</entry>
2566      <entry/>
2567    </row>
2568    <row>
2569      <entry>33.6.6</entry>
2570      <entry>Class template <code>promise</code></entry>
2571      <entry>Y</entry>
2572      <entry/>
2573    </row>
2574    <row>
2575      <entry>33.6.7</entry>
2576      <entry>Class template <code>future</code></entry>
2577      <entry>Y</entry>
2578      <entry/>
2579    </row>
2580    <row>
2581      <entry>33.6.8</entry>
2582      <entry>Class template <code>shared_future</code></entry>
2583      <entry>Y</entry>
2584      <entry/>
2585    </row>
2586    <row>
2587      <entry>33.6.9</entry>
2588      <entry>Function template <code>async</code></entry>
2589      <entry>Y</entry>
2590      <entry/>
2591    </row>
2592    <row>
2593      <entry>33.6.10</entry>
2594      <entry>Class template <code>packaged_task</code></entry>
2595      <entry>Y</entry>
2596      <entry/>
2597    </row>
2598    <row>
2599      <entry>
2600	<emphasis>Appendix D</emphasis>
2601      </entry>
2602      <entry namest="c2" nameend="c4" align="left">
2603	<emphasis>Compatibility features</emphasis>
2604      </entry>
2605    </row>
2606    <row>
2607      <entry>D.4</entry>
2608      <entry>C++ standard library headers</entry>
2609      <entry>Y</entry>
2610      <entry/>
2611    </row>
2612    <row>
2613      <entry>D.4.1</entry>
2614      <entry>Header <code>&lt;ccomplex&gt;</code> synopsis</entry>
2615      <entry>Y</entry>
2616      <entry/>
2617    </row>
2618    <row>
2619      <entry>D.4.1</entry>
2620      <entry>Header <code>&lt;cstdalign&gt;</code> synopsis</entry>
2621      <entry>Y</entry>
2622      <entry/>
2623    </row>
2624    <row>
2625      <entry>D.4.1</entry>
2626      <entry>Header <code>&lt;cstdbool&gt;</code> synopsis</entry>
2627      <entry>Y</entry>
2628      <entry/>
2629    </row>
2630    <row>
2631      <entry>D.4.1</entry>
2632      <entry>Header <code>&lt;ctgmath&gt;</code> synopsis</entry>
2633      <entry>Y</entry>
2634      <entry/>
2635    </row>
2636    <row>
2637      <entry>D.5</entry>
2638      <entry>C standard library headers</entry>
2639      <entry>Y</entry>
2640      <entry/>
2641    </row>
2642    <row>
2643      <entry>D.6</entry>
2644      <entry><code>char*</code> streams</entry>
2645      <entry>Y</entry>
2646      <entry/>
2647    </row>
2648    <row>
2649      <entry>D.7</entry>
2650      <entry><code>uncaught_exception</code></entry>
2651      <entry>Y</entry>
2652      <entry/>
2653    </row>
2654    <row>
2655      <entry>D.8</entry>
2656      <entry>Old adaptable function bindings</entry>
2657      <entry>Y</entry>
2658      <entry/>
2659    </row>
2660    <row>
2661      <entry>D.9</entry>
2662      <entry>The default allocator</entry>
2663      <entry>Y</entry>
2664      <entry/>
2665    </row>
2666    <row>
2667      <entry>D.10</entry>
2668      <entry>Raw storage iterator</entry>
2669      <entry>Y</entry>
2670      <entry/>
2671    </row>
2672    <row>
2673      <entry>D.11</entry>
2674      <entry>Temporary buffers</entry>
2675      <entry>Y</entry>
2676      <entry/>
2677    </row>
2678    <row>
2679      <entry>D.12</entry>
2680      <entry>Deprecated type traits</entry>
2681      <entry>Y</entry>
2682      <entry/>
2683    </row>
2684    <row>
2685      <entry>D.13</entry>
2686      <entry>Deprecated iterator primitives</entry>
2687      <entry>Y</entry>
2688      <entry/>
2689    </row>
2690    <row>
2691      <entry>D.14</entry>
2692      <entry>Deprecated <code>shared_ptr</code> observers</entry>
2693      <entry>Y</entry>
2694      <entry/>
2695    </row>
2696    <row>
2697      <entry>D.15</entry>
2698      <entry>Deprecated standard code conversion facets</entry>
2699      <entry>Y</entry>
2700      <entry/>
2701    </row>
2702    <row>
2703      <entry>D.16</entry>
2704      <entry>Deprecated convenience conversion interfaces</entry>
2705      <entry>Y</entry>
2706      <entry/>
2707    </row>
2708
2709  </tbody>
2710</tgroup>
2711</table>
2712
2713<table frame="all" xml:id="table.cxx17_ts_status">
2714<title>C++ Technical Specifications Implementation Status</title>
2715
2716<tgroup cols="4" align="left" colsep="0" rowsep="1">
2717<colspec colname="c1"/>
2718<colspec colname="c2"/>
2719<colspec colname="c3"/>
2720<colspec colname="c4"/>
2721  <thead>
2722    <row>
2723      <entry>Paper</entry>
2724      <entry>Title</entry>
2725      <entry>Status</entry>
2726      <entry>Comments</entry>
2727    </row>
2728  </thead>
2729
2730  <tbody>
2731
2732    <row>
2733      <entry>
2734	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html">
2735	  N4076
2736	</link>
2737      </entry>
2738      <entry>A generalized callable negator</entry>
2739      <entry>Y</entry>
2740      <entry>Library Fundamentals 2 TS</entry>
2741    </row>
2742
2743    <row>
2744      <entry>
2745	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4273.htm">
2746	  N4273
2747	</link>
2748      </entry>
2749      <entry>Uniform Container Erasure</entry>
2750      <entry>Y</entry>
2751      <entry>Library Fundamentals 2 TS</entry>
2752    </row>
2753
2754    <row>
2755      <entry>
2756	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4061.pdf">
2757	  N4061
2758	</link>
2759      </entry>
2760      <entry>Greatest Common Divisor and Least Common Multiple</entry>
2761      <entry>Y</entry>
2762      <entry>Library Fundamentals 2 TS</entry>
2763    </row>
2764
2765    <row>
2766      <entry>
2767	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4066.htm">
2768	  N4066
2769	</link>
2770      </entry>
2771      <entry>Delimited iterators</entry>
2772      <entry>Y</entry>
2773      <entry>Library Fundamentals 2 TS</entry>
2774    </row>
2775
2776    <row>
2777      <entry>
2778	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf">
2779	  N4282
2780	</link>
2781      </entry>
2782      <entry>The World's Dumbest Smart Pointer</entry>
2783      <entry>Y</entry>
2784      <entry>Library Fundamentals 2 TS</entry>
2785    </row>
2786
2787
2788    <row>
2789      <entry>
2790	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html">
2791	  N4388
2792	</link>
2793      </entry>
2794      <entry>Const-Propagating Wrapper</entry>
2795      <entry>Y</entry>
2796      <entry>Library Fundamentals 2 TS</entry>
2797    </row>
2798
2799    <row>
2800      <entry>
2801	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html">
2802	  N4391
2803	</link>
2804      </entry>
2805      <entry> <code>make_array</code>, revision 4 </entry>
2806      <entry>Y</entry>
2807      <entry>Library Fundamentals 2 TS</entry>
2808    </row>
2809
2810    <row>
2811      <entry>
2812	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf">
2813	  N4502
2814	</link>
2815      </entry>
2816      <entry> Support for the C++ Detection Idiom, V2 </entry>
2817      <entry>Y</entry>
2818      <entry>Library Fundamentals 2 TS</entry>
2819    </row>
2820
2821    <row>
2822      <entry>
2823	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf">
2824	  N4519
2825	</link>
2826      </entry>
2827      <entry> Source-Code Information Capture </entry>
2828      <entry>Y</entry>
2829      <entry>Library Fundamentals 2 TS</entry>
2830    </row>
2831
2832    <row>
2833      <?dbhtml bgcolor="#C8B0B0" ?>
2834      <entry>
2835	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html">
2836	  N4521
2837	</link>
2838      </entry>
2839      <entry> Merge Fundamentals V1 into V2 </entry>
2840      <entry>
2841        N (components from V1 are still in namespace
2842        <code>fundamentals_v1</code>)
2843      </entry>
2844      <entry>Library Fundamentals 2 TS</entry>
2845    </row>
2846
2847    <row>
2848      <entry>
2849	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html">
2850	  P0013R1
2851	</link>
2852      </entry>
2853      <entry>Logical Operator Type Traits (revision 1)</entry>
2854      <entry>Y</entry>
2855      <entry>Library Fundamentals 2 TS</entry>
2856    </row>
2857
2858    <row>
2859      <entry>
2860	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4531.html">
2861	  N4531
2862	</link>
2863      </entry>
2864      <entry>std::rand replacement, revision 3</entry>
2865      <entry>Y</entry>
2866      <entry>Library Fundamentals 2 TS</entry>
2867    </row>
2868
2869    <row>
2870      <entry>
2871	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0214r9.pdf">
2872	  P0214R9
2873	</link>
2874      </entry>
2875      <entry>Data-Parallel Types</entry>
2876      <entry>Y</entry>
2877      <entry>Parallelism 2 TS</entry>
2878    </row>
2879
2880  </tbody>
2881</tgroup>
2882</table>
2883
2884<section xml:id="iso.2017.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
2885
2886   <para>For behaviour which is also specified by previous standards,
2887      see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation
2888      Specific Behavior</link> and <link linkend="iso.2011.specific">C++
2889      2011 Implementation Specific Behavior</link>. This section only
2890      documents behaviour which is new in the 2017 standard.
2891   </para>
2892
2893   <para>
2894      <emphasis>20.5.1.2 [headers]</emphasis>
2895      Whether names from Annex K are declared by C++ headers depends on
2896      whether the underlying C library supports Annex K and declares the
2897      names. For the GNU C library, there is no Annex K support and so
2898      none of its names are declared by C++ headers.
2899   </para>
2900
2901   <para>
2902      <emphasis>23.6.5 [optional.bad_optional_access]</emphasis>
2903      <code>what()</code> returns <literal>"bad optional access"</literal>.
2904   </para>
2905
2906   <para>
2907      <emphasis>23.7.3 [variant.variant]</emphasis>
2908      <classname>variant</classname> supports over-aligned types.
2909   </para>
2910
2911   <para>
2912      <emphasis>23.7.10 [variant.bad.access]</emphasis>
2913      <code>what()</code> returns one of the strings
2914      <literal>"std::get: variant is valueless"</literal>,
2915      <literal>"std::get: wrong index for variant"</literal>,
2916      <literal>"std::visit: variant is valueless"</literal>,
2917      or <literal>"std::visit&lt;R&gt;: variant is valueless"</literal>.
2918   </para>
2919
2920   <para>
2921      <emphasis>23.12.5.2 [memory.resource.pool.options]</emphasis>
2922      Let S equal <code>numeric_limits&lt;size_t&gt;::digits</code>.
2923      The limit for maximum number of blocks in a chunk is given by
2924      <inlineequation><mathphrase>2<superscript>N</superscript>-1</mathphrase></inlineequation>,
2925      where N is <inlineequation><mathphrase>min(19, 3 + S/2)</mathphrase></inlineequation>.
2926      The largest allocation size that will be allocated from a pool is
2927      <inlineequation><mathphrase>2<superscript>22</superscript></mathphrase></inlineequation>
2928      when <inlineequation><mathphrase>S > 20</mathphrase></inlineequation>,
2929      otherwise 3072 when <inlineequation><mathphrase>S > 16</mathphrase></inlineequation>,
2930      otherwise 768.
2931   </para>
2932
2933   <para>
2934      <emphasis>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</emphasis>
2935      The default <code>next_buffer_size</code> is <code>128 * sizeof(void*)</code>.
2936      The default growth factor is <code>1.5</code>.
2937   </para>
2938
2939   <para>
2940      <emphasis>23.15.4.3 [meta.unary.prop]</emphasis>
2941      The predicate condition for
2942      <code>has_unique_object_representations</code> is true for all scalar
2943      types except floating point types.
2944   </para>
2945
2946   <para>
2947      <emphasis>23.19.3 [execpol.type],
2948      28.4.3 [algorithms.parallel.exec]</emphasis>
2949      There are no implementation-defined execution policies.
2950   </para>
2951
2952   <para>
2953      <emphasis>24.4.2 [string.view.template]</emphasis>
2954      <classname>basic_string_view&lt;C, T&gt;::iterator</classname> is
2955      <code>C*</code> and
2956      <classname>basic_string_view&lt;C, T&gt;::const_iterator</classname> is
2957      <code>const C*</code>.
2958   </para>
2959
2960
2961   <para>
2962      <emphasis>28.4.3 [algorithms.parallel.exec]</emphasis>
2963      Threads of execution created by <classname>std::thread</classname>
2964      provide concurrent forward progress guarantees, so threads of execution
2965      implicitly created by the library will provide parallel forward
2966      progress guarantees.
2967   </para>
2968
2969   <para>
2970      <emphasis>29.4.1 [cfenv.syn]</emphasis>
2971      The effects of the <filename>&lt;cfenv&gt;</filename> functions
2972      depends on whether the <code>FENV_ACCESS</code> pragma is supported,
2973      and on the C library that provides the header.
2974   </para>
2975
2976   <para>
2977      <emphasis>29.6.9 [c.math.rand]</emphasis>
2978      Whether the <function>rand</function> function may introduce data
2979      races depends on the target C library that provides the function.
2980   </para>
2981
2982   <para>
2983      <emphasis>29.9.5 [sf.cmath]</emphasis>
2984      The effect of calling the mathematical special functions with large
2985      inputs should be documented here.
2986   </para>
2987
2988   <para>
2989      <emphasis>30.10.2.1 [fs.conform.9945]</emphasis>
2990      The behavior of the filesystem library implementation will depend on
2991      the target operating system. Some features will not be supported
2992      on some targets. Symbolic links and file permissions
2993      are not supported on Windows.
2994   </para>
2995
2996   <para>
2997      <emphasis>30.10.5 [fs.filesystem.syn]</emphasis>
2998      The clock used for file times is an unspecified type
2999      with a signed 64-bit representation, capable of representing
3000      timestamps with nanosecond resolution. The clock's epoch is
3001      unspecified, but is not the same as the system clock's epoch.
3002   </para>
3003
3004   <para>
3005      <emphasis>30.10.7.1 [fs.path.generic]</emphasis>
3006      dot-dot in the root-directory refers to the root-directory itself.
3007      On Windows, a drive specifier such as <code>"C:"</code> or
3008      <code>"z:"</code> is treated as a root-name. On Cygwin, a path
3009      that begins with two successive directory separators is a
3010      root-name. Otherwise (for POSIX-like systems other than Cygwin),
3011      the implementation-defined root-name is an unspecified string
3012      which does not appear in any pathnames.
3013   </para>
3014
3015   <para>
3016      <emphasis>30.10.10.1 [fs.enum.path.format]</emphasis>
3017      The character sequence is always interpreted in the native pathname
3018      format.
3019   </para>
3020
3021   <para>
3022      <emphasis>30.10.15.4 [fs.op.file_size]</emphasis>
3023      If <code>!is_regular_file(p)</code>, an error is reported.
3024   </para>
3025
3026    <para>
3027      <emphasis>30.10.15.32 [fs.op.rename]</emphasis>
3028      On Windows, <code>filesystem::rename</code>
3029      is implemented by calling <code>MoveFileExW</code> and so
3030      does not meet the requirements of POSIX <code>rename</code>
3031      when one or both of the paths resolves to an existing directory.
3032      Specifically, it is not possible to rename a directory to replace another
3033      directory (POSIX requires that to work if the directory being
3034      replaced is empty).
3035    </para>
3036
3037
3038   <section xml:id="iso.2017.par2ts" xreflabel="Implementation Specific Behavior of the Parallelism 2 TS"><info><title>Parallelism 2 TS</title></info>
3039
3040     <para>
3041        <emphasis>9.3 [parallel.simd.abi]</emphasis>
3042        <code>max_fixed_size&lt;T&gt;</code> is 32, except when targetting
3043        AVX512BW and <code>sizeof(T)</code> is 1.
3044     </para>
3045
3046     <para>
3047        When targeting 32-bit x86,
3048        <classname>simd_abi::compatible&lt;T&gt;</classname> is an alias for
3049        <classname>simd_abi::scalar</classname>.
3050        When targeting 64-bit x86 (including x32) or Aarch64,
3051        <classname>simd_abi::compatible&lt;T&gt;</classname> is an alias for
3052        <classname>simd_abi::_VecBuiltin&lt;16&gt;</classname>,
3053        unless <code>T</code> is <code>long double</code>, in which case it is
3054        an alias for <classname>simd_abi::scalar</classname>.
3055        When targeting ARM (but not Aarch64) with NEON support,
3056        <classname>simd_abi::compatible&lt;T&gt;</classname> is an alias for
3057        <classname>simd_abi::_VecBuiltin&lt;16&gt;</classname>,
3058        unless <code>sizeof(T) &gt; 4</code>, in which case it is
3059        an alias for <classname>simd_abi::scalar</classname>. Additionally,
3060        <classname>simd_abi::compatible&lt;float&gt;</classname> is an alias for
3061        <classname>simd_abi::scalar</classname> unless compiling with
3062        -ffast-math.
3063     </para>
3064
3065     <para>
3066        When targeting x86 (both 32-bit and 64-bit),
3067        <classname>simd_abi::native&lt;T&gt;</classname> is an alias for one of
3068        <classname>simd_abi::scalar</classname>,
3069        <classname>simd_abi::_VecBuiltin&lt;16&gt;</classname>,
3070        <classname>simd_abi::_VecBuiltin&lt;32&gt;</classname>, or
3071        <classname>simd_abi::_VecBltnBtmsk&lt;64&gt;</classname>, depending on
3072        <code>T</code> and the machine options the compiler was invoked with.
3073     </para>
3074
3075     <para>
3076        When targeting ARM/Aarch64 or POWER,
3077        <classname>simd_abi::native&lt;T&gt;</classname> is an alias for
3078        <classname>simd_abi::scalar</classname> or
3079        <classname>simd_abi::_VecBuiltin&lt;16&gt;</classname>, depending on
3080        <code>T</code> and the machine options the compiler was invoked with.
3081     </para>
3082
3083     <para>
3084        For any other targeted machine
3085        <classname>simd_abi::compatible&lt;T&gt;</classname> and
3086        <classname>simd_abi::native&lt;T&gt;</classname> are aliases for
3087        <classname>simd_abi::scalar</classname>. (subject to change)
3088     </para>
3089
3090     <para>
3091        The extended ABI tag types defined in the
3092        <code>std::experimental::parallelism_v2::simd_abi</code> namespace are:
3093        <classname>simd_abi::_VecBuiltin&lt;Bytes&gt;</classname>, and
3094        <classname>simd_abi::_VecBltnBtmsk&lt;Bytes&gt;</classname>.
3095     </para>
3096
3097     <para>
3098        <classname>simd_abi::deduce&lt;T, N, Abis...&gt;::type</classname>,
3099        with <code>N &gt; 1</code> is an alias for an extended ABI tag, if a
3100        supported extended ABI tag exists. Otherwise it is an alias for
3101        <classname>simd_abi::fixed_size&lt;N&gt;</classname>. The <classname>
3102        simd_abi::_VecBltnBtmsk</classname> ABI tag is preferred over
3103        <classname>simd_abi::_VecBuiltin</classname>.
3104     </para>
3105
3106     <para>
3107        <emphasis>9.4 [parallel.simd.traits]</emphasis>
3108        <classname>memory_alignment&lt;T, U&gt;::value</classname> is
3109        <code>sizeof(U) * T::size()</code> rounded up to the next power-of-two
3110        value.
3111     </para>
3112
3113     <para>
3114        <emphasis>9.6.1 [parallel.simd.overview]</emphasis>
3115        On ARM, <classname>simd&lt;T, _VecBuiltin&lt;Bytes&gt;&gt;</classname>
3116        is supported if <code>__ARM_NEON</code> is defined and
3117        <code>sizeof(T) &lt;= 4</code>. Additionally,
3118        <code>sizeof(T) == 8</code> with integral <code>T</code> is supported if
3119        <code>__ARM_ARCH &gt;= 8</code>, and <code>double</code> is supported if
3120        <code>__aarch64__</code> is defined.
3121
3122        On POWER, <classname>simd&lt;T, _VecBuiltin&lt;Bytes&gt;&gt;</classname>
3123        is supported if <code>__ALTIVEC__</code> is defined and <code>sizeof(T)
3124        &lt; 8</code>. Additionally, <code>double</code> is supported if
3125        <code>__VSX__</code> is defined, and any <code>T</code> with <code>
3126        sizeof(T) &lt;= 8</code> is supported if <code>__POWER8_VECTOR__</code>
3127        is defined.
3128
3129        On x86, given an extended ABI tag <code>Abi</code>,
3130        <classname>simd&lt;T, Abi&gt;</classname> is supported according to the
3131        following table:
3132        <table frame="all" xml:id="table.par2ts_simd_support">
3133          <title>Support for Extended ABI Tags</title>
3134
3135          <tgroup cols="4" align="left" colsep="0" rowsep="1">
3136          <colspec colname="c1"/>
3137          <colspec colname="c2"/>
3138          <colspec colname="c3"/>
3139          <colspec colname="c4"/>
3140            <thead>
3141              <row>
3142                <entry>ABI tag <code>Abi</code></entry>
3143                <entry>value type <code>T</code></entry>
3144                <entry>values for <code>Bytes</code></entry>
3145                <entry>required machine option</entry>
3146              </row>
3147            </thead>
3148
3149            <tbody>
3150              <row>
3151                <entry morerows="5">
3152                  <classname>_VecBuiltin&lt;Bytes&gt;</classname>
3153                </entry>
3154                <entry morerows="1"><code>float</code></entry>
3155                <entry>8, 12, 16</entry>
3156                <entry>"-msse"</entry>
3157              </row>
3158
3159              <row>
3160                <entry>20, 24, 28, 32</entry>
3161                <entry>"-mavx"</entry>
3162              </row>
3163
3164              <row>
3165                <entry morerows="1"><code>double</code></entry>
3166                <entry>16</entry>
3167                <entry>"-msse2"</entry>
3168              </row>
3169
3170              <row>
3171                <entry>24, 32</entry>
3172                <entry>"-mavx"</entry>
3173              </row>
3174
3175              <row>
3176                <entry morerows="1">
3177                  integral types other than <code>bool</code>
3178                </entry>
3179                <entry>
3180                  <code>Bytes</code> ��� 16 and <code>Bytes</code> divisible by
3181                  <code>sizeof(T)</code>
3182                </entry>
3183                <entry>"-msse2"</entry>
3184              </row>
3185
3186              <row>
3187                <entry>
3188                  16 &lt; <code>Bytes</code> ��� 32 and <code>Bytes</code>
3189                  divisible by <code>sizeof(T)</code>
3190                </entry>
3191                <entry>"-mavx2"</entry>
3192              </row>
3193
3194              <row>
3195                <entry morerows="1">
3196                  <classname>_VecBuiltin&lt;Bytes&gt;</classname> and
3197                  <classname>_VecBltnBtmsk&lt;Bytes&gt;</classname>
3198                </entry>
3199                <entry>
3200                  vectorizable types with <code>sizeof(T)</code> ��� 4
3201                </entry>
3202                <entry morerows="1">
3203                  32 &lt; <code>Bytes</code> ��� 64 and <code>Bytes</code>
3204                  divisible by <code>sizeof(T)</code>
3205                </entry>
3206                <entry>"-mavx512f"</entry>
3207              </row>
3208
3209              <row>
3210                <entry>
3211                  vectorizable types with <code>sizeof(T)</code> &lt; 4
3212                </entry>
3213                <entry>"-mavx512bw"</entry>
3214              </row>
3215
3216              <row>
3217                <entry morerows="1">
3218                  <classname>_VecBltnBtmsk&lt;Bytes&gt;</classname>
3219                </entry>
3220                <entry>
3221                  vectorizable types with <code>sizeof(T)</code> ��� 4
3222                </entry>
3223                <entry morerows="1">
3224                  <code>Bytes</code> ��� 32 and <code>Bytes</code> divisible by
3225                  <code>sizeof(T)</code>
3226                </entry>
3227                <entry>"-mavx512vl"</entry>
3228              </row>
3229
3230              <row>
3231                <entry>
3232                  vectorizable types with <code>sizeof(T)</code> &lt; 4
3233                </entry>
3234                <entry>"-mavx512bw" and "-mavx512vl"</entry>
3235              </row>
3236
3237            </tbody>
3238          </tgroup>
3239        </table>
3240     </para>
3241
3242   </section>
3243
3244</section>
3245
3246</section>
3247