From: Richard Smith
Date: Sat, 17 Mar 2018 14:28:47 +0000 (+0000)
Subject: [cxx_status] Update to match Jacksonville 2018 motions.
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=22fe1e6daf38346cd4d76214cb2c502f01fbccc7;p=clang
[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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@327769 91177308-0d34-0410-b5e6-96231b3b80d8
---
diff --git a/www/cxx_status.html b/www/cxx_status.html
index 10a4cdabe0..267875ee2c 100644
--- a/www/cxx_status.html
+++ b/www/cxx_status.html
@@ -56,7 +56,7 @@ each language mode.
C++11 implementation status
Clang 3.3 and later implement all of the ISO
+ href="http://www.iso.org/standard/50372.html">ISO
C++ 2011 standard.
By default, Clang builds C++ code according to the C++98 standard, with many
@@ -134,10 +134,15 @@ with libc++ or with gcc's libstdc++.
Clang 2.9 |
- Lambda expressions |
+ Lambda expressions |
N2927 |
Clang 3.1 |
+
+
+ P0588R1 (DR) |
+ No |
+
Declared type of an expression |
N2343 |
@@ -195,10 +200,15 @@ with libc++ or with gcc's libstdc++.
Clang 3.3 (1) |
- Generalized constant expressions |
+ Generalized constant expressions |
N2235 |
Clang 3.1 |
+
+
+ P0859R0 (DR) |
+ No |
+
Alignment support |
N2341 |
@@ -220,10 +230,15 @@ with libc++ or with gcc's libstdc++.
Clang 3.0 |
- Inheriting constructors |
+ Inheriting constructors |
N2540 |
Clang 3.3 |
+
+
+ P0136R1 (DR) |
+ Clang 3.9 |
+
Explicit conversion operators |
N2437 |
@@ -296,10 +311,15 @@ with libc++ or with gcc's libstdc++.
Clang 2.9 |
- Range-based for |
+ Range-based for |
N2930 |
Clang 3.0 |
+
+
+ P0962R1 (DR) |
+ No |
+
Explicit virtual overrides |
N2928
@@ -427,7 +447,7 @@ change.
C++14 implementation status
Clang 3.4 and later implement all of the ISO
+ href="http://www.iso.org/standard/64029.html">ISO
C++ 2014 standard.
You can use Clang in C++14 mode with the -std=c++14 option
@@ -521,8 +541,8 @@ version 3.7.
C++17 implementation status
-Clang 5 and later implement all the features
-of the C++ 2017 Draft International Standard.
+ Clang 5 and later implement all the features of the
+ISO C++ 2017 standard.
You can use Clang in C++17 mode with the -std=c++17 option
(use -std=c++1z in Clang 4 and earlier).
@@ -619,11 +639,6 @@ of the C++ 2017 Draft International Standard.
| P0061R1 |
Yes |
-
- New specification for inheriting constructors (DR1941 et al) |
- P0136R1 |
- Clang 3.9 (9) |
-
[[fallthrough]] attribute |
@@ -682,13 +697,18 @@ of the C++ 2017 Draft International Standard.
Clang 4 |
- Template argument deduction for class templates |
+ Template argument deduction for class templates |
P0091R3 |
Clang 5 |
P0512R0 |
+
+
+ P0702R1 (DR) |
+ Clang 6 |
+
Non-type template parameters with auto type |
P0127R2 |
@@ -702,7 +722,7 @@ of the C++ 2017 Draft International Standard.
Stricter expression evaluation order |
P0145R3 |
- Clang 4 (10) |
+ Clang 4 (9) |
P0400R0 |
@@ -723,10 +743,20 @@ of the C++ 2017 Draft International Standard.
Clang 3.9 |
- Structured bindings |
+ Structured bindings |
P0217R3 |
Clang 4 |
+
+
+ P0961R1 (DR) |
+ No |
+
+
+
+ P0969R0 (DR) |
+ No |
+
Separate variable and condition for if and switch |
P0305R1 |
@@ -736,7 +766,7 @@ of the C++ 2017 Draft International Standard.
Matching template template parameters to compatible arguments |
P0522R0 |
- Partial (12) |
+ Partial (10) |
Removing deprecated dynamic exception specifications |
@@ -756,17 +786,14 @@ all language versions that allow type deduction from auto
(per the request of the C++ committee).
In Clang 3.7, a warning is emitted for all cases that would change meaning.
-(9): This is the resolution to a Defect Report, so is applied
-to all language versions supporting inheriting constructors.
-
-(10): Under the MS ABI, function parameters are destroyed from
+(9): Under the MS ABI, function parameters are destroyed from
left to right in the callee. As a result, function parameters in calls to
operator<<, operator>>, operator->*,
operator&&, operator||, and operator,
functions using expression syntax are no longer guaranteed to be destroyed in
reverse construction order in that ABI.
-(12): Despite being the resolution to a Defect Report, this
+(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 -frelaxed-template-template-args in Clang 4
onwards.
@@ -826,11 +853,6 @@ as the draft C++2a standard evolves.
P0428R2 |
No |
-
- Initializer list constructors in class template argument deduction |
- P0702R1 |
- Clang 6 (13) |
-
Concepts |
P0734R0 |
@@ -845,11 +867,6 @@ as the draft C++2a standard evolves.
P0614R1 |
No |
-
- Simplifying implicit lambda capture |
- P0588R1 |
- No (14) |
-
ADL and function templates that are not visible |
P0846R0 |
@@ -861,15 +878,13 @@ as the draft C++2a standard evolves.
No |
- Less eager instantiation of constexpr functions |
- P0859R0 |
- No (15) |
-
-
- Consistent comparison (operator<=>) |
+ Consistent comparison (operator<=>) |
P0515R3 |
- No |
+ No |
+
+ P0905R1 |
+
Access checking on specializations |
P0692R1 |
@@ -885,20 +900,43 @@ as the draft C++2a standard evolves.
P0315R4 |
No |
+
+
+ [[no_unique_address]] attribute |
+ P0840R2 |
+ No |
+
+
+ [[likely]] and [[unlikely]] attributes |
+ P0479R5 |
+ No |
+
+
+ typename optional in more contexts |
+ P0634R3 |
+ No |
+
+
+ Pack expansion in lambda init-capture |
+ P0780R2 |
+ No |
+
-
-(13): This is the resolution to a Defect Report, so is applied
-to all language versions supporting class template argument deduction.
-
-(14): This is the resolution to a Defect Report, so will be applied
-to all language versions supporting lamba expressions.
-
-(15): This is the resolution to a Defect Report, so will be applied
-to all language versions supporting constexpr.
-
-
+Defect reports
+
+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.
+
+Clang also has a test suite for conformance to resolutions for issues on the
+C++ core issues list,
+most of which are considered Defect Reports.
+Implementation status for C++ core issues based on
+that test suite is tracked on a separate page.
Technical specifications and standing documents
@@ -959,6 +997,7 @@ and library features that are not part of standard C++.
Superseded by P0734R0 |
+
[DRAFT TS] Coroutines |
N4663 |
-fcoroutines-ts -stdlib=libc++ |
@@ -982,6 +1021,14 @@ and library features that are not part of standard C++.
-fmodules-ts |
WIP |
+
[TS] Transactional Memory |
N4514 |