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