summaryrefslogtreecommitdiff
path: root/www/cxx_status.html
diff options
context:
space:
mode:
Diffstat (limited to 'www/cxx_status.html')
-rw-r--r--www/cxx_status.html100
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&amp;</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&lt;=&gt;</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>