Fix timevar.cc build on systems that don't have CLOCK_MONOTONIC
[gcc.git] / libstdc++-v3 / doc / xml / manual / status_cxx2017.xml
blob48a0317950c395929694490c7111ae19e795f609
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"?>
5 <info><title>C++ 2017</title>
6   <keywordset>
7     <keyword>ISO C++</keyword>
8     <keyword>2017</keyword>
9   </keywordset>
10 </info>
12 <para>
13 In this implementation the <literal>-std=gnu++17</literal> or
14 <literal>-std=c++17</literal> flag must be used to enable language
15 and library
16 features. See <link linkend="manual.intro.using.flags">dialect</link>
17 options. The pre-defined symbol
18 <constant>__cplusplus</constant> is used to check for the
19 presence of the required flag.
20 GCC 9.1 was the first release with non-experimental C++17 support,
21 so the API and ABI of features added in C++17 is only stable
22 since that release.
23 </para>
25 <para>
26 This section describes the C++17 and library TS support in
27 mainline GCC, not in any particular release.
28 </para>
30 <para>
31 The following table lists new library features that are included in
32 the C++17 standard. The "Proposal" column provides a link to the
33 ISO C++ committee proposal that describes the feature, while the "Status"
34 column indicates the first version of GCC that contains an implementation of
35 this feature (if it has been implemented).
36 The "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:
38 Feature-testing recommendations for C++</link>.
39 </para>
41 <table frame="all" xml:id="table.cxx17_features">
42 <title>C++ 2017 Library Features</title>
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>
58   <tbody>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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>
230     <row>
231       <entry> Improving pair and tuple </entry>
232       <entry>
233         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
344     <row>
345       <entry>TriviallyCopyable <code>reference_wrapper</code> </entry>
346       <entry>
347         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
388     <row>
389       <entry> Extending memory management tools </entry>
390       <entry>
391         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
443     <row>
444       <entry> Logical Operator Type Traits</entry>
445       <entry>
446         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
454     <row>
455       <entry> Adding [nothrow-]swappable traits </entry>
456       <entry>
457         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
476     <row>
477       <entry> has_unique_object_representations </entry>
478       <entry>
479         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
555     <row>
556       <entry>Contiguous Iterators </entry>
557       <entry>
558         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
579     <row>
580       <entry> Emplace return type </entry>
581       <entry>
582         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
603     <row>
604       <entry> Splicing Maps and Sets </entry>
605       <entry>
606         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
712     <row>
713       <entry> Relative Paths for Filesystem</entry>
714       <entry>
715         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
734     <row>
735       <entry> Directory Entry Caching for Filesystem </entry>
736       <entry>
737        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
778     <row>
779       <entry> A byte type definition </entry>
780       <entry>
781         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
790     <row>
791       <entry> Elementary string conversions </entry>
792       <entry>
793         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
817     <row>
818       <entry> Making Optional Greater Equal Again </entry>
819       <entry>
820         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
828   </tbody>
829 </tgroup>
830 </table>
832 <para>
833 Note 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
835 header is included without using <option>-std</option> to enable C++17 support.
836 </para>
838 <para>
839 Note 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>
844 <para>
845 Note 3: The Parallel Algorithms have an external dependency on Intel TBB 2018
846 or later. If the <filename class="headerfile">&lt;execution&gt;</filename>
847 header is included then <code>-ltbb</code> must be used to link to TBB.
848 </para>
850 <para>
851 Note 4: The mathematical special functions are enabled in C++17 mode from
852 GCC 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
854 and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>.
855 </para>
859 <para>
860 The following status table is based on the table of contents of
861 ISO/IEC 14882:2017.
862 Some subclauses are not shown in the table where the content is unchanged
863 since C++14 and the implementation is complete.
864 </para>
866 <table frame="all" xml:id="table.cxx17_status">
867 <title>C++ 2017 Implementation Status</title>
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>
883   <tbody>
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>
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.
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>
2709   </tbody>
2710 </tgroup>
2711 </table>
2713 <table frame="all" xml:id="table.cxx17_ts_status">
2714 <title>C++ Technical Specifications Implementation Status</title>
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>
2730   <tbody>
2732     <row>
2733       <entry>
2734         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2743     <row>
2744       <entry>
2745         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2754     <row>
2755       <entry>
2756         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2765     <row>
2766       <entry>
2767         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2776     <row>
2777       <entry>
2778         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2788     <row>
2789       <entry>
2790         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2799     <row>
2800       <entry>
2801         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2810     <row>
2811       <entry>
2812         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2821     <row>
2822       <entry>
2823         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2832     <row>
2833       <?dbhtml bgcolor="#C8B0B0" ?>
2834       <entry>
2835         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2847     <row>
2848       <entry>
2849         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.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>
2858     <row>
2859       <entry>
2860         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2869     <row>
2870       <entry>
2871         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
2880   </tbody>
2881 </tgroup>
2882 </table>
2884 <section xml:id="iso.2017.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
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>
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>
2901    <para>
2902       <emphasis>23.6.5 [optional.bad_optional_access]</emphasis>
2903       <code>what()</code> returns <literal>"bad optional access"</literal>.
2904    </para>
2906    <para>
2907       <emphasis>23.7.3 [variant.variant]</emphasis>
2908       <classname>variant</classname> supports over-aligned types.
2909    </para>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
3038    <section xml:id="iso.2017.par2ts" xreflabel="Implementation Specific Behavior of the Parallelism 2 TS"><info><title>Parallelism 2 TS</title></info>
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>
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>
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>
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>
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>
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>
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>
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>
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.
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.
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>
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>
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>
3159               <row>
3160                 <entry>20, 24, 28, 32</entry>
3161                 <entry>"-mavx"</entry>
3162               </row>
3164               <row>
3165                 <entry morerows="1"><code>double</code></entry>
3166                 <entry>16</entry>
3167                 <entry>"-msse2"</entry>
3168               </row>
3170               <row>
3171                 <entry>24, 32</entry>
3172                 <entry>"-mavx"</entry>
3173               </row>
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>
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>
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>
3209               <row>
3210                 <entry>
3211                   vectorizable types with <code>sizeof(T)</code> &lt; 4
3212                 </entry>
3213                 <entry>"-mavx512bw"</entry>
3214               </row>
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>
3230               <row>
3231                 <entry>
3232                   vectorizable types with <code>sizeof(T)</code> &lt; 4
3233                 </entry>
3234                 <entry>"-mavx512bw" and "-mavx512vl"</entry>
3235               </row>
3237             </tbody>
3238           </tgroup>
3239         </table>
3240      </para>
3242    </section>
3244 </section>
3246 </section>