Remove duplicated entry in C++17 library status table
[official-gcc.git] / libstdc++-v3 / doc / xml / manual / status_cxx2017.xml
blob0e35f757be623b0812168a5594725e8f86bdff3f
1 <section xmlns="http://docbook.org/ns/docbook" version="5.0" 
2          xml:id="status.iso.201z" xreflabel="Status C++ 201z">
3 <?dbhtml filename="status_iso_cxx201z.html"?>
5 <info><title>C++ 201z</title>
6   <keywordset>
7     <keyword>ISO C++</keyword>
8     <keyword>201z</keyword>
9   </keywordset>
10 </info>
12 <para>
13 In this implementation the <literal>-std=gnu++1z</literal> or
14 <literal>-std=c++1z</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 </para>
22 <para>
23 This section describes the C++1z and library TS support in mainline GCC SVN,
24 not in any particular release.
25 </para>
27 <para>
28 The following table lists new library features that have been accepted into
29 the C++1z working draft. The "Proposal" column provides a link to the
30 ISO C++ committee proposal that describes the feature, while the "Status"
31 column indicates the first version of GCC that contains an implementation of
32 this feature (if it has been implemented).
33 The "SD-6 Feature Test" column shows the corresponding macro or header from
34 <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:
35 Feature-testing recommendations for C++</link>.
36 </para>
38 <table frame="all" xml:id="table.cxx1z_status">
39 <title>C++ 201z Implementation Status</title>
41 <tgroup cols="4" align="left" colsep="0" rowsep="1">
42 <colspec colname="c1"/>
43 <colspec colname="c2"/>
44 <colspec colname="c3"/>
45 <colspec colname="c4"/>
46   <thead>
47     <row>
48       <entry>Library Feature</entry>
49       <entry>Proposal</entry>
50       <entry>Status</entry>
51       <entry>SD-6 Feature Test</entry>
52     </row>
53   </thead>
55   <tbody>
57     <row>
58       <?dbhtml bgcolor="#C8B0B0" ?>
59       <entry>
60         <code>constexpr std::hardware_{constructive,destructive}_interference_size</code>
61       </entry>
62       <entry>
63         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html">
64         P0154R1
65         </link>
66       </entry>
67       <entry align="center"> No </entry>
68       <entry> <code>__cpp_lib_hardware_interference_size >= 201603</code> </entry>
69     </row>
71     <row>
72       <entry> Core Issue 1776: Replacement of class objects containing reference members</entry>
73       <entry>
74         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html">
75         P0137R1
76         </link>
77       </entry>
78       <entry align="center"> 7 </entry>
79       <entry> <code>__cpp_lib_launder >= 201606</code> </entry>
80     </row>
82     <row>
83       <entry>Wording for <code>std::uncaught_exceptions</code></entry>
84       <entry>
85         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf">
86           N4259
87         </link>
88       </entry>
89       <entry align="center">6.1</entry>
90       <entry><code>__cpp_lib_uncaught_exceptions >= 201411</code></entry>
91     </row>
93     <row>
94       <entry> Variant: a type-safe union for C++17 </entry>
95       <entry>
96         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0088r3.html">
97         P0088R3
98         </link>
99       </entry>
100       <entry align="center"> 7 </entry>
101       <entry> <code>__has_include(&lt;variant&gt;)</code> </entry>
102     </row>
104     <row>
105       <entry> Library Fundamentals V1 TS Components: <code>optional</code> </entry>
106       <entry>
107         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
108         P0220R1
109         </link>
110       </entry>
111       <entry align="center"> 7 </entry>
112       <entry> <code>__has_include(&lt;optional&gt;)</code> </entry>
113     </row>
115     <row>
116       <entry> Library Fundamentals V1 TS Components: <code>any</code> </entry>
117       <entry>
118         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
119         P0220R1
120         </link>
121       </entry>
122       <entry align="center"> 7 </entry>
123       <entry> <code>__has_include(&lt;any&gt;)</code> </entry>
124     </row>
126     <row>
127       <entry> Library Fundamentals V1 TS Components: <code>string_view</code> </entry>
128       <entry>
129         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
130         P0220R1
131         </link>
132       </entry>
133       <entry align="center"> 7 </entry>
134       <entry> <code>__has_include(&lt;string_view&gt;)</code> </entry>
135     </row>
137     <row>
138       <?dbhtml bgcolor="#C8B0B0" ?>
139       <entry> Library Fundamentals V1 TS Components: <code>memory_resource</code> </entry>
140       <entry>
141         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
142         P0220R1
143         </link>
144       </entry>
145       <entry align="center"> No </entry>
146       <entry> <code>__has_include(&lt;memory_resource&gt;)</code> </entry>
147     </row>
149     <row>
150       <entry> Library Fundamentals V1 TS Components: <code>apply</code> </entry>
151       <entry>
152         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
153         P0220R1
154         </link>
155       </entry>
156       <entry align="center"> 7 </entry>
157       <entry> <code>__cpp_lib_apply >= 201603</code> </entry>
158     </row>
160     <row>
161       <entry> Library Fundamentals V1 TS Components: <code>shared_ptr&lt;T[]&gt;</code> </entry>
162       <entry>
163         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
164         P0220R1
165         </link>
166       </entry>
167       <entry align="center"> 7 </entry>
168       <entry> <code>__cpp_lib_shared_ptr_arrays >= 201603</code> </entry>
169     </row>
171     <row>
172       <entry> Library Fundamentals V1 TS Components: Searchers </entry>
173       <entry>
174         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
175         P0220R1
176         </link>
177       </entry>
178       <entry align="center"> 7 </entry>
179       <entry> <code>__cpp_lib_boyer_moore_searcher >= 201603</code> </entry>
180     </row>
182     <row>
183       <entry> Library Fundamentals V1 TS Components: Sampling </entry>
184       <entry>
185         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
186         P0220R1
187         </link>
188       </entry>
189       <entry align="center"> 7 </entry>
190       <entry> <code>__cpp_lib_sample >= 201603</code> </entry>
191     </row>
193     <row>
194       <entry> Constant View: A proposal for a <code>std::as_const</code> helper function template       </entry>
195       <entry>
196         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="">
197         P0007R1
198         </link>
199       </entry>
200       <entry align="center"> 7 </entry>
201       <entry><code> __cpp_lib_as_const >= 201510 </code></entry>
202     </row>
204     <row>
205       <entry> Improving pair and tuple </entry>
206       <entry>
207         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387">
208         N4387
209         </link>
210       </entry>
211       <entry align="center"> 6.1 </entry>
212       <entry> N/A </entry>
213     </row>
215     <row>
216       <entry> <code>make_from_tuple</code>: apply for construction </entry>
217       <entry>
218         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf">
219         P0209R2
220         </link>
221       </entry>
222       <entry align="center"> 7 </entry>
223       <entry><code> __cpp_lib_make_from_tuple >= 201606 </code></entry>
224     </row>
226     <row>
227       <?dbhtml bgcolor="#C8B0B0" ?>
228       <entry>
229         Removing <code>auto_ptr</code>, <code>random_shuffle()</code>,
230         And Old <code>&lt;functional&gt;</code> Stuff
231       </entry>
232       <entry>
233         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm">
234           N4190
235         </link>
236       </entry>
237       <entry align="center">No (kept for backwards compatibility)</entry>
238       <entry/>
239     </row>
241     <row>
242       <?dbhtml bgcolor="#C8B0B0" ?>
243       <entry> Deprecating Vestigial Library Parts in C++17 </entry>
244       <entry>
245         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html">
246         P0174R2
247         </link>
248       </entry>
249       <entry align="center"> No </entry>
250       <entry/>
251     </row>
253     <row>
254       <entry> Making <code>std::owner_less</code> more flexible </entry>
255       <entry>
256         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html">
257         P0074R0
258         </link>
259       </entry>
260       <entry align="center"> 7 </entry>
261       <entry><code> __cpp_lib_transparent_operators >= 201510 </code></entry>
262     </row>
264     <row>
265       <entry> <code>std::addressof</code> should be constexpr </entry>
266       <entry>
267         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296">
268         LWG2296
269         </link>
270       </entry>
271       <entry align="center"> 7 </entry>
272       <entry><code> __cpp_lib_addressof_constexpr >= 201603 </code></entry>
273     </row>
275     <row>
276       <entry> Safe conversions in <code>unique_ptr&lt;T[]&gt;</code> </entry>
277       <entry>
278         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf">
279         N4089
280         </link>
281       </entry>
282       <entry align="center"> 6 </entry>
283       <entry/>
284     </row>
286     <row>
287       <entry> LWG 2228: Missing SFINAE rule in unique_ptr templated assignment </entry>
288       <entry>
289         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html">
290           N4366
291         </link>
292       </entry>
293       <entry align="center"> 6 </entry>
294       <entry/>
295     </row>
297     <row>
298       <entry> Re-enabling <code>shared_from_this</code></entry>
299       <entry>
300         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html">
301         P0033R1
302         </link>
303       </entry>
304       <entry align="center"> 7 </entry>
305       <entry><code>__cpp_lib_enable_shared_from_this >= 201603</code></entry>
306     </row>
308     <row>
309       <entry> A proposal to add <code>invoke</code> function template </entry>
310       <entry>
311         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html">
312         N4169
313         </link>
314       </entry>
315       <entry align="center"> 6.1 </entry>
316       <entry><code> __cpp_lib_invoke >= 201411 </code></entry>
317     </row>
319     <row>
320       <entry>TriviallyCopyable <code>reference_wrapper</code> </entry>
321       <entry>
322         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html">
323           N4277
324         </link>
325       </entry>
326       <entry align="center"> 5.1 </entry>
327       <entry/>
328     </row>
330     <row>
331       <entry> Adopt <code>not_fn</code> from Library Fundamentals 2 for C++17 </entry>
332       <entry>
333         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html">
334         P0005R4
335         </link>
336       </entry>
337       <entry align="center"> 7 </entry>
338       <entry><code>__cpp_lib_not_fn >= 201603</code></entry>
339     </row>
341     <row>
342       <entry> Fixes for <code>not_fn</code> </entry>
343       <entry>
344         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html">
345         P0358R1
346         </link>
347       </entry>
348       <entry align="center"> 7 </entry>
349       <entry/>
350     </row>
352     <row>
353       <entry> Fixing a design mistake in the searchers interface in Library Fundamentals </entry>
354       <entry>
355         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf">
356         P0253R1
357         </link>
358       </entry>
359       <entry align="center"> 7 </entry>
360       <entry/>
361     </row>
363     <row>
364       <entry> Extending memory management tools </entry>
365       <entry>
366         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html">
367         P0040R3
368         </link>
369       </entry>
370       <entry align="center"> 7 </entry>
371       <entry><code> </code></entry>
372     </row>
374     <row>
375       <entry> <code>shared_ptr::weak_type</code></entry>
376       <entry>
377         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html">
378         P0163R0
379         </link>
380       </entry>
381       <entry align="center"> 7 </entry>
382       <entry><code> __cpp_lib_shared_ptr_weak_type >= 201606</code></entry>
383     </row>
385     <row>
386       <entry>Transformation Trait Alias <code>void_t</code></entry>
387       <entry>
388         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n3911.pdf">
389           N3911
390         </link>
391       </entry>
392       <entry align="center">6.1</entry>
393       <entry><code> __cpp_lib_void_t >= 201411</code></entry>
394     </row>
396     <row>
397       <entry> Wording for <code>bool_constant</code>, revision 1 </entry>
398       <entry>
399         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html">
400           N4389
401         </link>
402       </entry>
403       <entry align="center">6.1</entry>
404       <entry><code> __cpp_lib_bool_constant >= 201505</code></entry>
405     </row>
407     <row>
408       <entry> Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</entry>
409       <entry>
410         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html">
411         P0006R0
412         </link>
413       </entry>
414       <entry align="center"> 7 </entry>
415       <entry><code> __cpp_lib_type_trait_variable_templates >= 201510 </code></entry>
416     </row>
418     <row>
419       <entry> Logical Operator Type Traits</entry>
420       <entry>
421         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html">
422         P0013R1
423         </link>
424       </entry>
425       <entry align="center"> 6.1 </entry>
426       <entry><code> __cpp_lib_logical_traits >= 201510 </code></entry>
427     </row>
429     <row>
430       <entry> Adding [nothrow-]swappable traits </entry>
431       <entry>
432         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html">
433         P0185R1
434         </link>
435       </entry>
436       <entry align="center"> 7 (<code>__is_swappable</code> available since 6.1)</entry>
437       <entry><code> __cpp_lib_is_swappable >= 201603 </code></entry>
438     </row>
440     <row>
441       <entry> <code>is_callable</code>, the missing INVOKE related trait</entry>
442       <entry>
443         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html">
444         P0077R2
445         </link>
446       </entry>
447       <entry align="center"> 7 </entry>
448       <entry><code> __cpp_lib_is_callable >= 201603 </code></entry>
449     </row>
451     <row>
452       <entry> has_unique_object_representations </entry>
453       <entry>
454         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html">
455         P0258R2
456         </link>
457       </entry>
458       <entry align="center"> 7 </entry>
459       <entry><code> __cpp_lib_has_unique_object_representations >= 201606 </code></entry>
460     </row>
462     <row>
463       <entry> Polishing <code>&lt;chrono&gt;</code> </entry>
464       <entry>
465         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0092r1.html">
466         P0092R1
467         </link>
468       </entry>
469       <entry align="center"> 7 </entry>
470       <entry><code> __cpp_lib_chrono >= 201510 </code></entry>
471     </row>
473     <row>
474       <entry> Adding more constexpr to <code>&lt;chrono&gt;</code> </entry>
475       <entry>
476         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0505r0.html">
477         P0505R0
478         </link>
479       </entry>
480       <entry align="center"> 7 </entry>
481       <entry><code> ??? </code></entry>
482     </row>
484     <row>
485       <?dbhtml bgcolor="#B0B0B0" ?>
486       <entry> Constexpr for <code>std::char_traits</code> </entry>
487       <entry>
488         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0426r1.html">
489         P0426R1
490         </link>
491       </entry>
492       <entry align="center"> 7 (partial) </entry>
493       <entry><code> ??? </code></entry>
494     </row>
496     <row>
497       <entry> Integrating <code>std::string_view</code> and <code>std::string</code> </entry>
498       <entry>
499         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf">
500         P0254R2
501         </link>
502       </entry>
503       <entry align="center"> 7 </entry>
504       <entry><code> </code></entry>
505     </row>
507     <row>
508       <entry> Give 'std::string' a non-const '.data()' member function </entry>
509       <entry>
510         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html">
511         P0272R1
512         </link>
513       </entry>
514       <entry align="center"> 7 </entry>
515       <entry><code> </code></entry>
516     </row>
518     <row>
519       <entry>Cleaning-up noexcept in the Library</entry>
520       <entry>
521         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf">
522           N4258
523         </link>
524       </entry>
525       <entry align="center">6.1</entry>
526       <entry><code> __cpp_lib_allocator_traits_is_always_equal >= 201411 </code></entry>
527     </row>
529     <row>
530       <entry>Contiguous Iterators </entry>
531       <entry>
532         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.html">
533           N4284
534         </link>
535       </entry>
536       <entry align="center">N/A</entry>
537       <entry/>
538     </row>
540     <row>
541       <entry> Minimal incomplete type support for standard containers </entry>
542       <entry>
543         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html">
544         N4510
545         </link>
546       </entry>
547       <entry align="center"> 6.2 (3.0)</entry>
548       <entry><code> __cpp_lib_incomplete_container_elements >= 201505 </code>
549              (the feature was always supported, but the macro was not defined until GCC 6.2)
550       </entry>
551     </row>
553     <row>
554       <entry> Emplace return type </entry>
555       <entry>
556         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf">
557         P0084R2
558         </link>
559       </entry>
560       <entry align="center"> 7 </entry>
561       <entry><code> ??? </code></entry>
562     </row>
564     <row>
565       <entry>Improved insertion interface for unique-key maps</entry>
566       <entry>
567         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html">
568           N4279
569         </link>
570       </entry>
571       <entry align="center"> 6.1 </entry>
572       <entry><code> __cpp_lib_map_try_emplace >= 201411</code>,
573              <code> __cpp_lib_unordered_map_try_emplace >= 201411</code>
574       </entry>
575     </row>
577     <row>
578       <entry> Splicing Maps and Sets </entry>
579       <entry>
580         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf">
581         P0083R3
582         </link>
583       </entry>
584       <entry align="center"> 7 </entry>
585       <entry><code> __cpp_lib_node_extract >= 201606 </code></entry>
586     </row>
588     <row>
589       <entry>Non-member <code>size()</code> and more</entry>
590       <entry>
591         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf">
592           N4280
593         </link>
594       </entry>
595       <entry align="center"> 6.1 </entry>
596       <entry><code> __cpp_lib_nonmember_container_access >= 201411 </code></entry>
597     </row>
599     <row>
600       <entry> A Proposal to Add Constexpr Modifiers to <code>reverse_iterator</code>, <code>move_iterator</code>, <code>array</code> and Range Access </entry>
601       <entry>
602         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html">
603         P0031R0
604         </link>
605       </entry>
606       <entry align="center"> 7 </entry>
607       <entry><code> __cpp_lib_array_constexpr >= 201603 </code></entry>
608     </row>
610     <row>
611       <?dbhtml bgcolor="#C8B0B0" ?>
612       <entry> The Parallelism TS Should be Standardized  </entry>
613       <entry>
614         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html">
615         P0024R2
616         </link>
617       </entry>
618       <entry align="center"> No </entry>
619       <entry><code> __has_include(&lt;execution&gt;) </code>,
620              <code> __cpp_lib_parallel_algorithm >= 201603 </code></entry>
621     </row>
623     <row>
624       <entry> An algorithm to "clamp" a value between a pair of boundary values </entry>
625       <entry>
626         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html">
627         P0025R0
628         </link>
629       </entry>
630       <entry align="center"> 7 </entry>
631       <entry><code> __cpp_lib_clamp >= 201603 </code></entry>
632     </row>
634     <row>
635       <entry> Adopt Selected Library Fundamentals V2 Components for C++17 </entry>
636       <entry>
637         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf">
638         P0295R0
639         </link>
640       </entry>
641       <entry align="center"> 7 </entry>
642       <entry><code> __cpp_lib_gcd >= 201606 </code>,
643              <code> __cpp_lib_lcm >= 201606 </code>
644       </entry>
645     </row>
647     <row>
648       <entry> Proposal to Introduce a 3-Argument Overload to <code>std::hypot</code> </entry>
649       <entry>
650         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf">
651         P0030R1
652         </link>
653       </entry>
654       <entry align="center"> 7 </entry>
655       <entry><code> __cpp_lib_hypot >= 201603 </code></entry>
656     </row>
658     <row>
659       <entry> Mathematical Special Functions for C++17 </entry>
660       <entry>
661         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf">
662         P0226R1
663         </link>
664       </entry>
665       <entry align="center"> 7 (6.1) </entry>
666       <entry><code> __cpp_lib_math_special_functions >= 201603 </code>
667              (for GCC 6 or pre-C++17 define
668              <code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value
669              and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>)
670       </entry>
671     </row>
673     <row>
674       <?dbhtml bgcolor="#C8B0B0" ?>
675       <entry>Adopt the File System TS for C++17  </entry>
676       <entry>
677         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html">
678         P0218R1
679         </link>
680       </entry>
681       <entry align="center"> No </entry>
682       <entry><code> __has_include(&lt;filesystem&gt;) </code>,
683              <code> __cpp_lib_filesystem >= 201603 </code></entry>
684     </row>
686     <row>
687       <?dbhtml bgcolor="#C8B0B0" ?>
688       <entry> Relative Paths for Filesystem</entry>
689       <entry>
690         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html">
691         P0219R1
692         </link>
693       </entry>
694       <entry align="center"> No </entry>
695       <entry/>
696     </row>
698     <row>
699       <?dbhtml bgcolor="#C8B0B0" ?>
700       <entry> Adapting string_view by filesystem paths </entry>
701       <entry>
702         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf">
703         P0392R0
704         </link>
705       </entry>
706       <entry align="center"> No </entry>
707       <entry/>
708     </row>
710     <row>
711       <entry> constexpr <code>atomic&lt;T&gt;::is_always_lock_free</code>        </entry>
712       <entry>
713         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html">
714         P0152R1
715         </link>
716       </entry>
717       <entry align="center"> 7 </entry>
718       <entry><code> __cpp_lib_atomic_is_always_lock_free >= 201603 </code></entry>
719     </row>
721     <row>
722       <entry>A proposal to add <code>shared_mutex</code> (untimed) (Revision 4)</entry>
723       <entry>
724         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html">
725           N4508
726         </link>
727       </entry>
728       <entry align="center"> 6.1 </entry>
729       <entry><code> __cpp_lib_shared_mutex >= 201505 </code></entry>
730     </row>
732     <row>
733       <entry> Variadic <code>lock_guard</code> </entry>
734       <entry>
735         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0156r2.html">
736         P0156R2
737         </link>
738       </entry>
739       <entry align="center"> 7 </entry>
740       <entry><code> __cpp_lib_scoped_lock >= 201703 </code></entry>
741     </row>
743     <row>
744       <entry> byte type definition </entry>
745       <entry>
746         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf">
747         P0298R3
748         </link>
749       </entry>
750       <entry align="center"> 7 </entry>
751       <entry><code> ??? </code></entry>
752     </row>
754     <row>
755       <?dbhtml bgcolor="#C8B0B0" ?>
756       <entry> Elementary string conversions </entry>
757       <entry>
758         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0067r5.html">
759         P0067R5
760         </link>
761       </entry>
762       <entry align="center"> No </entry>
763       <entry><code> ??? </code></entry>
764     </row>
767   </tbody>
768 </tgroup>
769 </table>
772 <table frame="all" xml:id="table.cxx1z_ts_status">
773 <title>C++ Technical Specifications Implementation Status</title>
775 <tgroup cols="4" align="left" colsep="0" rowsep="1">
776 <colspec colname="c1"/>
777 <colspec colname="c2"/>
778 <colspec colname="c3"/>
779 <colspec colname="c4"/>
780   <thead>
781     <row>
782       <entry>Paper</entry>
783       <entry>Title</entry>
784       <entry>Status</entry>
785       <entry>Comments</entry>
786     </row>
787   </thead>
789   <tbody>
791     <row>
792       <entry>
793         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html">
794           N4076
795         </link>
796       </entry>
797       <entry>A generalized callable negator</entry>
798       <entry>Y</entry>
799       <entry>Library Fundamentals 2 TS</entry>
800     </row>
802     <row>
803       <entry>
804         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4273.htm">
805           N4273
806         </link>
807       </entry>
808       <entry>Uniform Container Erasure</entry>
809       <entry>Y</entry>
810       <entry>Library Fundamentals 2 TS</entry>
811     </row>
813     <row>
814       <entry>
815         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4061.pdf">
816           N4061
817         </link>
818       </entry>
819       <entry>Greatest Common Divisor and Least Common Multiple</entry>
820       <entry>Y</entry>
821       <entry>Library Fundamentals 2 TS</entry>
822     </row>
824     <row>
825       <entry>
826         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4066.htm">
827           N4066
828         </link>
829       </entry>
830       <entry>Delimited iterators</entry>
831       <entry>Y</entry>
832       <entry>Library Fundamentals 2 TS</entry>
833     </row>
835     <row>
836       <entry>
837         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf">
838           N4282
839         </link>
840       </entry>
841       <entry>The World's Dumbest Smart Pointer</entry>
842       <entry>Y</entry>
843       <entry>Library Fundamentals 2 TS</entry>
844     </row>
847     <row>
848       <entry>
849         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html">
850           N4388
851         </link>
852       </entry>
853       <entry>Const-Propagating Wrapper</entry>
854       <entry>Y</entry>
855       <entry>Library Fundamentals 2 TS</entry>
856     </row>
858     <row>
859       <entry>
860         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html">
861           N4391
862         </link>
863       </entry>
864       <entry> <code>make_array</code>, revision 4 </entry>
865       <entry>Y</entry>
866       <entry>Library Fundamentals 2 TS</entry>
867     </row>
869     <row>
870       <entry>
871         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf">
872           N4502
873         </link>
874       </entry>
875       <entry> Support for the C++ Detection Idiom, V2 </entry>
876       <entry>Y</entry>
877       <entry>Library Fundamentals 2 TS</entry>
878     </row>
880     <row>
881       <?dbhtml bgcolor="#C8B0B0" ?>
882       <entry>
883         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf">
884           N4519
885         </link>
886       </entry>
887       <entry> Source-Code Information Capture </entry>
888       <entry>N</entry>
889       <entry>Library Fundamentals 2 TS</entry>
890     </row>
892     <row>
893       <?dbhtml bgcolor="#C8B0B0" ?>
894       <entry>
895         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html">
896           N4521
897         </link>
898       </entry>
899       <entry> Merge Fundamentals V1 into V2 </entry>
900       <entry>N</entry>
901       <entry>Library Fundamentals 2 TS</entry>
902     </row>
904     <row>
905       <entry>
906         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html">
907           P0013R1
908         </link>
909       </entry>
910       <entry>Logical Operator Type Traits (revision 1)</entry>
911       <entry>Y</entry>
912       <entry>Library Fundamentals 2 TS</entry>
913     </row>
916   </tbody>
917 </tgroup>
918 </table>
920 <section xml:id="iso.2017.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
922    <para>For behaviour which is also specified by previous standards,
923       see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation
924       Specific Behavior</link> and <link linkend="iso.2011.specific">C++
925       2011 Implementation Specific Behavior</link>. This section only
926       documents behaviour which is new in the 2017 standard.
927    </para>
929    <para>
930       <emphasis>20.6.5 [optional.bad_optional_access]</emphasis>
931       <code>what()</code> returns <literal>"bad optional access"</literal>.
932    </para>
934    <para>
935       <emphasis>20.7.2 [variant.variant]</emphasis>
936       Whether <classname>variant</classname> supports over-aligned types
937       should be documented here.
938    </para>
940    <para>
941       <emphasis>20.7.10 [variant.bad.access]</emphasis>
942       <code>what()</code> returns <literal>"Unexpected index"</literal>.
943    </para>
945    <para>
946       <emphasis>20.12.5.2 [memory.resource.pool.options]</emphasis>
947       The limits for maximum number of blocks and largest allocation size
948       supported by <classname>pool_options</classname> should be documented
949       here.
950    </para>
952    <para>
953       <emphasis>20.12.6.1 [memory.resource.monotonic.buffer.ctor]</emphasis>
954       The default <code>next_buffer_size</code> and growth factor should
955       be documented here.
956    </para>
958    <para>
959       <emphasis>20.15.4.3 [meta.unary.prop]</emphasis>
960       The predicate condition for
961       <code>has_unique_object_representations</code> is true for all scalar
962       types except floating point types.
963    </para>
965    <para>
966       <emphasis>20.19.3 [execpol.type],
967       25.2.3 [algorithms.parallel.exec]</emphasis>
968       There are no implementation-defined execution policies.
969    </para>
971    <para>
972       <emphasis>22.4.2 [string.view.template]</emphasis>
973       <classname>basic_string_view&lt;C, T&gt;::iterator</classname> is
974       <code>C*</code> and
975       <classname>basic_string_view&lt;C, T&gt;::const_iterator</classname> is
976       <code>const C*</code>.
977    </para>
980    <para>
981       <emphasis>25.2.3 [algorithms.parallel.exec]</emphasis>
982       Threads of execution created by <classname>std::thread</classname>
983       provide concurrent forward progress guarantees, so threads of execution
984       implicitly created by the library will provide parallel forward
985       progress guarantees.
986    </para>
988    <para>
989       <emphasis>26.4.1 [cfenv.syn]</emphasis>
990       The effects of the <filename>&lt;cfenv&gt;</filename> functions
991       depends on whether the <code>FENV_ACCESS</code> pragma is supported,
992       and on the C library that provides the header.
993    </para>
995    <para>
996       <emphasis>26.6.9 [c.math.rand]</emphasis>
997       Whether the <function>rand</function> function may introduce data
998       races depends on the target C library that provides the function.
999    </para>
1001    <para>
1002       <emphasis>26.9.5 [sf.cmath]</emphasis>
1003       The effect of calling the mathematical special functions with large
1004       inputs should be documented here.
1005    </para>
1007    <para>
1008       <emphasis>27.10.2.1 [fs.conform.9945]</emphasis>
1009       The behavior of the filesystem library implementation will depend on
1010       the target operating system. Some features will not be not supported
1011       on some targets.
1012    </para>
1014    <para>
1015       <emphasis>27.10.6 [fs.filesystem.syn]</emphasis>
1016       The clock used for file times is
1017       <classname>std::chrono::system_clock</classname>.
1018    </para>
1020    <para>
1021       <emphasis>27.10.8 [path.generic]</emphasis>
1022       dot-dot in the root-directory refers to the root-directory itself.
1023    </para>
1026 </section>
1028 </section>