r327769 - [cxx_status] Update to match Jacksonville 2018 motions.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Sat Mar 17 07:28:47 PDT 2018


Author: rsmith
Date: Sat Mar 17 07:28:47 2018
New Revision: 327769

URL: http://llvm.org/viewvc/llvm-project?rev=327769&view=rev
Log:
[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.

Modified:
    cfe/trunk/www/cxx_status.html

Modified: cfe/trunk/www/cxx_status.html
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_status.html?rev=327769&r1=327768&r2=327769&view=diff
==============================================================================
--- cfe/trunk/www/cxx_status.html (original)
+++ cfe/trunk/www/cxx_status.html Sat Mar 17 07:28:47 2018
@@ -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/">l
       <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/">l
       <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/">l
       <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/">l
       <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 Stan
       <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 Stan
       <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 Stan
     <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 Stan
       <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 Stan
     <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 de
 (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<<</tt>, <tt>operator>></tt>, <tt>operator->*</tt>,
 <tt>operator&&</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>
@@ -846,11 +868,6 @@ as the draft C++2a standard evolves.
       <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>
       <td class="none" align="center">No</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<=></tt>)</td>
+      <td rowspan="2">Consistent comparison (<tt>operator<=></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 o
       <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 o
       <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>




More information about the cfe-commits mailing list