[cxx_status] Update to match Jacksonville 2018 motions.

Also rearrange how we list DR motions: rather than listing them as part of some
later standard, list them against the feature they are a DR against. Explicitly
add a description of how we handle DRs.

llvm-svn: 327769
This commit is contained in:
Richard Smith 2018-03-17 14:28:47 +00:00
parent 220671a080
commit a14f320e38
1 changed files with 97 additions and 50 deletions

View File

@ -56,7 +56,7 @@ each language mode.</p>
<h2 id="cxx11">C++11 implementation status</h2>
<p>Clang 3.3 and later implement all of the <a
href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=50372">ISO
href="http://www.iso.org/standard/50372.html">ISO
C++ 2011 standard</a>.
<p>By default, Clang builds C++ code according to the C++98 standard, with many
@ -134,10 +134,15 @@ with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr>
<td>Lambda expressions</td>
<td rowspan="2">Lambda expressions</td>
<td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf">N2927</a></td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr>
<!-- from Albuquerque 2017 -->
<td><a href="http://wg21.link/p0588r1">P0588R1</a> (<a href="#dr">DR</a>)</td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Declared type of an expression</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a></td>
@ -195,10 +200,15 @@ with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
<td class="full" align="center">Clang 3.3 <a href="#n2761">(1)</a></td>
</tr>
<tr>
<td>Generalized constant expressions</td>
<td rowspan="2">Generalized constant expressions</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a></td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr>
<!-- from Albuquerque 2017 -->
<td><a href="http://wg21.link/p0859r0">P0859R0</a> (<a href="#dr">DR</a>)</td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Alignment support</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf">N2341</a></td>
@ -220,10 +230,15 @@ with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr>
<td>Inheriting constructors</td>
<td rowspan="2">Inheriting constructors</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm">N2540</a></td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr>
<!-- from Kona 2015 -->
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r1.html">P0136R1</a> (<a href="#dr">DR</a>)</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr>
<td>Explicit conversion operators</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a></td>
@ -296,10 +311,15 @@ with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr>
<td>Range-based for</td>
<td rowspan="2">Range-based for</td>
<td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html">N2930</a></td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr>
<!-- from Jacksonville 2018 -->
<td><a href="http://wg21.link/p0962r1">P0962R1</a> (<a href="#dr">DR</a>)</td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Explicit virtual overrides</td>
<td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm">N2928</a>
@ -427,7 +447,7 @@ change.</span>
<h2 id="cxx14">C++14 implementation status</h2>
<p>Clang 3.4 and later implement all of the <a
href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=64029">ISO
href="http://www.iso.org/standard/64029.html">ISO
C++ 2014 standard</a>.
<p>You can use Clang in C++14 mode with the <code>-std=c++14</code> option
@ -521,8 +541,8 @@ version 3.7.
<h2 id="cxx17">C++17 implementation status</h2>
<p>Clang 5 and later implement all the features
of the C++ 2017 Draft International Standard.
<p>Clang 5 and later implement all the features of the
<a href="https://www.iso.org/standard/68564.html">ISO C++ 2017 standard</a>.
<p>You can use Clang in C++17 mode with the <code>-std=c++17</code> option
(use <code>-std=c++1z</code> in Clang 4 and earlier).</p>
@ -619,11 +639,6 @@ of the C++ 2017 Draft International Standard.
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0061.html">P0061R1</a></td>
<td class="full" align="center">Yes</td>
</tr>
<tr>
<td>New specification for inheriting constructors (<a href="cxx_dr_status.html#1941">DR1941</a> et al)</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r1.html">P0136R1</a></td>
<td class="full" align="center">Clang 3.9 <a href="#p0136">(9)</a></td>
</tr>
<!-- Jacksonville papers -->
<tr>
<td><tt>[[fallthrough]]</tt> attribute</td>
@ -682,13 +697,18 @@ of the C++ 2017 Draft International Standard.
<td class="full" align="center">Clang 4</td>
</tr>
<tr>
<td rowspan="2">Template argument deduction for class templates</td>
<td rowspan="3">Template argument deduction for class templates</td>
<td><a href="http://wg21.link/p0091r3">P0091R3</a></td>
<td rowspan="2" class="full" align="center">Clang 5</td>
</tr>
<tr> <!-- from Issaquah -->
<td><a href="http://wg21.link/p0512r0">P0512R0</a></td>
</tr>
<tr>
<!-- from Toronto 2017 -->
<td><a href="http://wg21.link/p0702r1">P0702R1</a> (<a href="#dr">DR</a>)</td>
<td class="svn" align="center">Clang 6</td>
</tr>
<tr>
<td>Non-type template parameters with <tt>auto</tt> type</td>
<td><a href="http://wg21.link/p0127r2">P0127R2</a></td>
@ -702,7 +722,7 @@ of the C++ 2017 Draft International Standard.
<tr>
<td rowspan=2>Stricter expression evaluation order</td>
<td><a href="http://wg21.link/p0145r3">P0145R3</a></td>
<td class="full" align="center" rowspan=2>Clang 4 <a href="#p0145">(10)</a></td>
<td class="full" align="center" rowspan=2>Clang 4 <a href="#p0145">(9)</a></td>
</tr>
<tr>
<td><a href="http://wg21.link/p0400r0">P0400R0</a></td>
@ -723,10 +743,20 @@ of the C++ 2017 Draft International Standard.
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr>
<td>Structured bindings</td>
<td rowspan="3">Structured bindings</td>
<td><a href="http://wg21.link/p0217r3">P0217R3</a></td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr>
<!-- from Jacksonville 2018 -->
<td><a href="http://wg21.link/p0961r1">P0961R1</a> (<a href="#dr">DR</a>)</td>
<td class="none" align="center">No</td>
</tr>
<tr>
<!-- from Jacksonville 2018 -->
<td><a href="http://wg21.link/p0969r0">P0969R0</a> (<a href="#dr">DR</a>)</td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Separate variable and condition for <tt>if</tt> and <tt>switch</tt></td>
<td><a href="http://wg21.link/p0305r1">P0305R1</a></td>
@ -736,7 +766,7 @@ of the C++ 2017 Draft International Standard.
<tr>
<td>Matching template template parameters to compatible arguments</td>
<td><a href="http://wg21.link/p0522r0">P0522R0</a></td>
<td class="partial" align="center">Partial <a href="#p0522">(12)</a></td>
<td class="partial" align="center">Partial <a href="#p0522">(10)</a></td>
</tr>
<tr>
<td>Removing deprecated dynamic exception specifications</td>
@ -756,17 +786,14 @@ all language versions that allow type deduction from <tt>auto</tt>
(per the request of the C++ committee).
In Clang 3.7, a warning is emitted for all cases that would change meaning.
</span><br>
<span id="p0136">(9): This is the resolution to a Defect Report, so is applied
to all language versions supporting inheriting constructors.
</span><br>
<span id="p0145">(10): Under the MS ABI, function parameters are destroyed from
<span id="p0145">(9): Under the MS ABI, function parameters are destroyed from
left to right in the callee. As a result, function parameters in calls to
<tt>operator&lt;&lt;</tt>, <tt>operator&gt;&gt;</tt>, <tt>operator-&gt;*</tt>,
<tt>operator&amp;&amp;</tt>, <tt>operator||</tt>, and <tt>operator,</tt>
functions using expression syntax are no longer guaranteed to be destroyed in
reverse construction order in that ABI.
</span><br>
<span id="p0522">(12): Despite being the resolution to a Defect Report, this
<span id="p0522">(10): Despite being the resolution to a Defect Report, this
feature is disabled by default in all language versions, and can be enabled
explicitly with the flag <tt>-frelaxed-template-template-args</tt> in Clang 4
onwards.
@ -826,11 +853,6 @@ as the draft C++2a standard evolves.
<td><a href="http://wg21.link/p0428r2">P0428R2</a></td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Initializer list constructors in class template argument deduction</td>
<td><a href="http://wg21.link/p0702r1">P0702R1</a></td>
<td class="svn" align="center">Clang 6 <a href="#p0702">(13)</a></td>
</tr>
<tr id="p0734">
<td rowspan="2">Concepts</td>
<td><a href="http://wg21.link/p0734r0">P0734R0</a></td>
@ -845,11 +867,6 @@ as the draft C++2a standard evolves.
<td><a href="http://wg21.link/p0614r1">P0614R1</a></td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Simplifying implicit lambda capture</td>
<td><a href="http://wg21.link/p0588r1">P0588R1</a></td>
<td class="none" align="center">No <a href="#p0588">(14)</a></td>
</tr>
<tr>
<td>ADL and function templates that are not visible</td>
<td><a href="http://wg21.link/p0846r0">P0846R0</a></td>
@ -861,15 +878,13 @@ as the draft C++2a standard evolves.
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Less eager instantiation of <tt>constexpr</tt> functions</td>
<td><a href="http://wg21.link/p0859r0">P0859R0</a></td>
<td class="none" align="center">No <a href="#p0859">(15)</a></td>
</tr>
<tr>
<td>Consistent comparison (<tt>operator&lt;=&gt;</tt>)</td>
<td rowspan="2">Consistent comparison (<tt>operator&lt;=&gt;</tt>)</td>
<td><a href="http://wg21.link/p0515r3">P0515R3</a></td>
<td class="none" align="center">No</td>
<td rowspan="2" class="none" align="center">No</td>
</tr>
<tr> <!-- from Jacksonville -->
<td><a href="http://wg21.link/p0905r1">P0905R1</a></td>
</tr>
<tr>
<td>Access checking on specializations</td>
<td><a href="http://wg21.link/p0692r1">P0692R1</a></td>
@ -885,20 +900,43 @@ as the draft C++2a standard evolves.
<td><a href="http://wg21.link/p0315r4">P0315R4</a></td>
<td class="none" align="center">No</td>
</tr>
<!-- Jacksonville papers -->
<tr>
<td><tt>[[no_unique_address]]</tt> attribute</td>
<td><a href="http://wg21.link/p0840r2">P0840R2</a></td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td><tt>[[likely]]</tt> and <tt>[[unlikely]]</tt> attributes</td>
<td><a href="http://wg21.link/p0479r5">P0479R5</a></td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td><tt>typename</tt> optional in more contexts</td>
<td><a href="http://wg21.link/p0634r3">P0634R3</a></td>
<td class="none" align="center">No</td>
</tr>
<tr>
<td>Pack expansion in lambda <i>init-capture</i></td>
<td><a href="http://wg21.link/p0780r2">P0780R2</a></td>
<td class="none" align="center">No</td>
</tr>
</table>
</details>
<p>
<span id="p0702">(13): This is the resolution to a Defect Report, so is applied
to all language versions supporting class template argument deduction.
</span><br>
<span id="p0588">(14): This is the resolution to a Defect Report, so will be applied
to all language versions supporting lamba expressions.
</span><br>
<span id="p0859">(15): This is the resolution to a Defect Report, so will be applied
to all language versions supporting <tt>constexpr</tt>.
</span>
</p>
<h2 id="dr">Defect reports</h2>
<p>Clang generally aims to implement resolutions to Defect Reports (bug fixes
against prior standards) retroactively, in all prior standard versions where
the fix is meaningful. Significant Defect Report changes to language features
after the publication of the relevant standard are marked (DR) in the above
table.</p>
<p>Clang also has a test suite for conformance to resolutions for issues on the
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_toc.html">C++ core issues list</a>,
most of which are considered Defect Reports.
<a href="cxx_dr_status.html">Implementation status for C++ core issues</a> based on
that test suite is tracked on a separate page.</p>
<h2 id="ts">Technical specifications and standing documents</h2>
@ -959,6 +997,7 @@ and library features that are not part of standard C++.</p>
<td class="na" align="center">Superseded by <a href="#p0734">P0734R0</a></td>
</tr>
<tr>
<!-- track unimplemented Coroutines features: p0913r1 p0914r1 -->
<td>[DRAFT TS] Coroutines</td>
<td><a href="https://isocpp.org/files/papers/N4663.pdf">N4663</a></td>
<td><tt>-fcoroutines-ts<br>-stdlib=libc++</tt></td>
@ -982,6 +1021,14 @@ and library features that are not part of standard C++.</p>
<td><tt>-fmodules-ts</tt></td>
<td class="none" align="center">WIP</td>
</tr>
<!--
<tr>
<td>[DRAFT TS] Reflection</td>
<td><a href="http://wg21.link/p0194r6">P0194R6</a></td>
<td></td>
<td class="none" align="center">No</td>
</tr>
-->
<tr>
<td>[TS] Transactional Memory</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4514.pdf">N4514</a></td>