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