diff options
Diffstat (limited to 'www/cxx_status.html')
| -rw-r--r-- | www/cxx_status.html | 100 |
1 files changed, 81 insertions, 19 deletions
diff --git a/www/cxx_status.html b/www/cxx_status.html index 4a4d44bd3679..0f93758e428c 100644 --- a/www/cxx_status.html +++ b/www/cxx_status.html @@ -11,7 +11,7 @@ .svn { background-color: #FFFF99 } .full { background-color: #CCFF99 } .na { background-color: #DDDDDD } - span:target { background-color: #FFFFBB; outline: #DDDD55 solid thin; } + :target { background-color: #FFFFBB; outline: #DDDD55 solid thin; } th { background-color: #FFDDAA } td { vertical-align: middle } tt { white-space: nowrap } @@ -26,7 +26,7 @@ <!--*************************************************************************--> <h1>C++ Support in Clang</h1> <!--*************************************************************************--> -<p>Last updated: $Date: 2017-08-11 18:16:08 +0200 (Fri, 11 Aug 2017) $</p> +<p>Last updated: $Date: 2017-12-01 00:07:29 +0100 (Fri, 01 Dec 2017) $</p> <p>Clang fully implements all published ISO C++ standards (<a href="#cxx98">C++98 / C++03</a>, <a @@ -521,10 +521,11 @@ version 3.7. <h2 id="cxx17">C++17 implementation status</h2> -<p>Clang SVN implements all the features +<p>Clang 5 and later implement all the features of the C++ 2017 Draft International Standard. -<p>You can use Clang in C++17 mode with the <code>-std=c++1z</code> option.</p> +<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> <details open> <summary>List of features and minimum Clang version with support</summary> @@ -647,7 +648,7 @@ of the C++ 2017 Draft International Standard. <tr> <td><tt>constexpr</tt> lambda expressions</td> <td><a href="http://wg21.link/p0170r1">P0170R1</a></td> - <td class="svn" align="center">SVN</td> + <td class="full" align="center">Clang 5</td> </tr> <tr> <td>Differing <tt>begin</tt> and <tt>end</tt> types in range-based <tt>for</tt></td> @@ -683,7 +684,7 @@ of the C++ 2017 Draft International Standard. <tr> <td rowspan="2">Template argument deduction for class templates</td> <td><a href="http://wg21.link/p0091r3">P0091R3</a></td> - <td rowspan="2" class="svn" align="center">SVN</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> @@ -767,7 +768,8 @@ reverse construction order in that ABI. </span><br> <span id="p0522">(12): Despite being the 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. +explicitly with the flag <tt>-frelaxed-template-template-args</tt> in Clang 4 +onwards. The change to the standard lacks a corresponding change for template partial ordering, resulting in ambiguity errors for reasonable and previously-valid code. This issue is expected to be rectified soon. @@ -777,13 +779,12 @@ code. This issue is expected to be rectified soon. <h2 id="cxx20">C++2a implementation status</h2> -<p>Clang does not yet support any of the proposed features of -<!--<p>Clang has <b>experimental</b> support for some proposed features of--> +<p>Clang has <b>experimental</b> support for some proposed features of the C++ standard following C++17, provisionally named C++2a. Note that support for these features may change or be removed without notice, as the draft C++2a standard evolves. -<!--<p>You can use Clang in C++2a mode with the <code>-std=c++2a</code> option.</p>--> +<p>You can use Clang in C++2a mode with the <code>-std=c++2a</code> option.</p> <details open> <summary>List of features and minimum Clang version with support</summary> @@ -798,22 +799,22 @@ as the draft C++2a standard evolves. <tr> <td>Default member initializers for bit-fields</td> <td><a href="http://wg21.link/p0683r1">P0683R1</a></td> - <td class="none" align="center">No</td> + <td class="svn" align="center">SVN</td> </tr> <tr> <td><tt>const&</tt>-qualified pointers to members</td> <td><a href="http://wg21.link/p0704r1">P0704R1</a></td> - <td class="none" align="center">No</td> + <td class="svn" align="center">SVN</td> </tr> <tr> <td>Allow <i>lambda-capture</i> <tt>[=, this]</tt></td> <td><a href="http://wg21.link/p0409r2">P0409R2</a></td> - <td class="none" align="center">No</td> + <td class="svn" align="center">SVN</td> </tr> <tr> <td><tt>__VA_OPT__</tt> for preprocessor comma elision</td> <td><a href="http://wg21.link/p0306r4">P0306R4</a></td> - <td class="none" align="center">No</td> + <td class="svn" align="center">SVN</td> </tr> <tr> <td>Designated initializers</td> @@ -828,16 +829,77 @@ as the draft C++2a standard evolves. <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">SVN <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> + <td rowspan="2" class="none" align="center">No</td> + </tr> + <tr> <!-- from Albuquerque --> + <td><a href="http://wg21.link/p0857r0">P0857R0</a></td> + </tr> + <!-- Albuquerque papers --> + <tr> + <td>Range-based for statements with initializer</td> + <td><a href="http://wg21.link/p0614r1">P0614R1</a></td> <td class="none" align="center">No</td> </tr> <tr> - <td>Concepts</td> - <td><a href="http://wg21.link/p0734r0">P0734R0</a></td> + <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> + </tr> + <tr> + <td><tt>const</tt> mismatch with defaulted copy constructor</td> + <td><a href="http://wg21.link/p0641r2">P0641R2</a></td> + <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><a href="http://wg21.link/p0515r3">P0515R3</a></td> + <td class="none" align="center">No</td> + </tr> + <tr> + <td>Access checking on specializations</td> + <td><a href="http://wg21.link/p0692r1">P0692R1</a></td> + <td class="partial" align="center">Partial</td> + </tr> + <tr> + <td>Default constructible and assignable stateless lambdas</td> + <td><a href="http://wg21.link/p0624r2">P0624R2</a></td> + <td class="none" align="center">No</td> + </tr> + <tr> + <td>Lambdas in unevaluated contexts</td> + <td><a href="http://wg21.link/p0315r4">P0315R4</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="ts">Technical specifications and standing documents</h2> <p>ISO C++ also publishes a number of documents describing additional language @@ -872,7 +934,7 @@ and library features that are not part of standard C++.</p> </td> </tr> <tr> - <td class="svn" align="center"> + <td class="full" align="center"> Clang 5 (<a href="http://wg21.link/p0096r4">P0096R4</a>)</a> </td> </tr> @@ -894,13 +956,13 @@ and library features that are not part of standard C++.</p> <td>[TS] Concepts</td> <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0121r0.pdf">P0121R0</a></td> <td></td> - <td class="none" align="center">WIP</td> + <td class="na" align="center">Superseded by <a href="#p0734">P0734R0</a></td> </tr> <tr> <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> - <td class="svn" align="center">SVN</td> + <td class="full" align="center">Clang 5</td> </tr> <tr> <td>[TS] Library Fundamentals, Version 1 (invocation type traits)</td> |
