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> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits