From patchwork Fri Mar 23 19:42:14 2018
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Jakub Jelinek
X-Patchwork-Id: 890418
Return-Path:
X-Original-To: incoming@patchwork.ozlabs.org
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
Authentication-Results: ozlabs.org;
spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org
(client-ip=209.132.180.131; helo=sourceware.org;
envelope-from=gcc-patches-return-475408-incoming=patchwork.ozlabs.org@gcc.gnu.org;
receiver=)
Authentication-Results: ozlabs.org;
dmarc=fail (p=none dis=none) header.from=redhat.com
Authentication-Results: ozlabs.org; dkim=pass (1024-bit key;
unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org
header.b="wAmZpyAY"; dkim-atps=neutral
Received: from sourceware.org (server1.sourceware.org [209.132.180.131])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256
bits)) (No client certificate requested)
by ozlabs.org (Postfix) with ESMTPS id 407Ygx05cMz9s0W
for ;
Sat, 24 Mar 2018 19:37:46 +1100 (AEDT)
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id
:list-unsubscribe:list-archive:list-post:list-help:sender:date
:from:to:cc:subject:message-id:reply-to:mime-version
:content-type; q=dns; s=default; b=ApDhfgWvYeANBt+2LNirzflDhFvjP
JPcbrxgbfxXGUY+QSraE+E08FjgK04VoTjBQrKCnvzE9v8vF2rPql0GnLtOSdxJX
7CUmXdOW9V7aZtsoWH8KNSqzRmkw/3ZPukvZRRvY0npCbfv2gKHHrDwcN2YonnIu
jI8V5ufoH10WjI=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id
:list-unsubscribe:list-archive:list-post:list-help:sender:date
:from:to:cc:subject:message-id:reply-to:mime-version
:content-type; s=default; bh=mjNZqIMCR0k5Eml3OKWiCOuHDpI=; b=wAm
ZpyAYkN+unvYwiWUkNa1SGg2c+C8uYPSooExZPYS7HJKtSwGda96drNWC9gKQZt3
hhc+aWiyWMhVM82KJWz8c4skoN76wv534jQGW/sGch1g2iKvNahUvgEoIlq1nHSM
rvdAgUvNQIz3/AuUTHotHuAJ3Xs2r0ohEONZQN5U=
Received: (qmail 44574 invoked by alias); 24 Mar 2018 08:37:38 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id:
List-Unsubscribe:
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 39855 invoked by uid 89); 24 Mar 2018 08:35:47 -0000
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-11.6 required=5.0 tests=AWL, BAYES_00,
GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT,
T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=2357,
Technical, 201411, adl
X-HELO: mx1.redhat.com
Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) (66.187.233.73) by
sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;
Sat, 24 Mar 2018 08:35:41 +0000
Received: from smtp.corp.redhat.com
(int-mx04.intmail.prod.int.rdu2.redhat.com
[10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA
(256/256 bits)) (No client certificate requested) by
mx1.redhat.com (Postfix) with ESMTPS id 6F079412C2F2 for
; Sat, 24 Mar 2018 08:35:28 +0000 (UTC)
Received: from tucnak.zalov.cz (unknown [10.36.118.110]) by
smtp.corp.redhat.com (Postfix) with ESMTPS id
2D4172023233 for ;
Sat, 24 Mar 2018 08:35:28 +0000 (UTC)
Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz
(8.15.2/8.15.2) with ESMTP id w2NJgFbk030177;
Fri, 23 Mar 2018 20:42:15 +0100
Received: (from jakub@localhost) by tucnak.zalov.cz (8.15.2/8.15.2/Submit)
id w2NJgEhg029363; Fri, 23 Mar 2018 20:42:14 +0100
Date: Fri, 23 Mar 2018 20:42:14 +0100
From: Jakub Jelinek
To: Jason Merrill , Jonathan Wakely
Cc: gcc-patches@gcc.gnu.org
Subject: [PATCH, wwwdocs] Update cxx-status.html
Message-ID: <20180323194214.GM8577@tucnak>
Reply-To: Jakub Jelinek
MIME-Version: 1.0
Content-Disposition: inline
User-Agent: Mutt/1.9.2 (2017-12-15)
X-IsSubscribed: yes
Hi!
The following patch adds C++2a stuff to cxx-status.html (list of papers from
clang table, filled in what has notes in cp/ChangeLog-2017 + __VA_OPT__).
For C++17 features I've just added a couple of /
markings and
added the second deduction guides paper (P0512R0), plus mentioned that the
standard has been published already.
Ok to commit?
C++17 support is still marked experimental, do we want to keep it that way
for GCC 8, or change that? Are there any known feature macros for the C++2a
features, or is that still WIP?
Jakub
--- htdocs/projects/cxx-status.html.jj 2018-03-23 19:36:46.146783821 +0100
+++ htdocs/projects/cxx-status.html 2018-03-23 20:33:04.528598450 +0100
@@ -15,6 +15,7 @@
C++11
C++14
C++17
+ C++2a
Technical Specifications
@@ -22,10 +23,148 @@
this page.
- C++17 Support in GCC
+ C++2a Support in GCC
GCC has experimental support for the next revision of the C++
- standard, which is expected to be published in 2017.
+ standard, which is expected to be published in 2020.
+
+ C++2a features are available as part of "mainline" GCC
+ in the trunk of GCC's repository
+ and will be available in GCC 8 and later. To enable C++2a
+ support, add the command-line parameter -std=c++2a
+ to your g++
command line. Or, to enable GNU
+ extensions in addition to C++2a features,
+ add -std=gnu++2a
.
+
+ Important: Because the ISO C++2a standard is
+ still evolving, GCC's support is experimental. No attempt
+ will be made to maintain backward compatibility with implementations of
+ C++2a features that do not reflect the final standard.
+
+ C++2a Language Features
+
+ The following table lists new language features that have been
+ accepted into the C++2a working draft. The "Proposal" column
+ provides a link to the ISO C++ committee proposal that describes the
+ feature, while the "Available in GCC?" column indicates the first
+ version of GCC that contains an implementation of this feature (if
+ it has been implemented).
+
+
+
+ Language Feature |
+ Proposal |
+ Available in GCC? |
+ SD-6 Feature Test |
+
+
+ Default member initializers for bit-fields |
+ P0683R1 |
+ 8 |
+ |
+
+
+ Fixing const-qualified pointers to members |
+ P0704R1 |
+ 8 |
+ |
+
+
+ Allow lambda capture [=, this] |
+ P0409R2 |
+ 8 |
+ |
+
+
+ __VA_OPT__ for preprocessor comma elision |
+ P0306R4 |
+ 8 (partial, no #__VA_OPT__ support) |
+ |
+
+
+ Designated initializers |
+ P0329R4 |
+ 8 |
+ |
+
+
+ Familiar template syntax for generic lambdas |
+ P0428R2 |
+ 8 |
+ |
+
+
+ List deduction of vector |
+ P0702R1 |
+ 8 |
+ |
+
+
+ Concepts |
+ P0734R0
+ P0857R0 |
+ |
+ |
+
+
+ Range-based for statements with initializer |
+ P0614R1 |
+ |
+ |
+
+
+ Simplifying implicit lambda capture |
+ P0588R1 |
+ 8 |
+ |
+
+ ADL and function templates that are not visible |
+ P0846R0 |
+ |
+ |
+
+
+ const mismatch with defaulted copy constructor |
+ P0641R2 |
+ |
+ |
+
+
+ Less eager instantiation of constexpr functions |
+ P0859R0 |
+ |
+ |
+
+
+ Consistent comparison (operator<=> ) |
+ P0515R3 |
+ |
+ |
+
+
+ Access checking on specializations |
+ P0692R1 |
+ |
+ |
+
+
+ Default constructible and assignable stateless lambdas |
+ P0624R2 |
+ |
+ |
+
+
+ Lambdas in unevaluated contexts |
+ P0315R4 |
+ |
+ |
+
+
+
+ C++17 Support in GCC
+
+ GCC has experimental support for the latest revision of the C++
+ standard, which was published in 2017.
C++17 features are available as part of "mainline" GCC
in the trunk of GCC's repository
@@ -96,7 +235,7 @@
__cpp_nontype_template_args >= 201411 |
- Extending static_assert |
+ Extending static_assert |
N3928 |
6 |
__cpp_static_assert >= 201411 |
@@ -114,24 +253,24 @@
|
- [[fallthrough]] attribute |
+ [[fallthrough]] attribute |
P0188R1 |
7 |
__has_cpp_attribute(fallthrough) |
- [[nodiscard]] attribute |
+ [[nodiscard]] attribute |
P0189R1 |
- 4.8 ([[gnu::warn_unused_result]])
+ 4.8 ([[gnu::warn_unused_result]] )
7 (P0189R1) |
__has_cpp_attribute(nodiscard) |
- [[maybe_unused]] attribute |
+ [[maybe_unused]] attribute |
P0212R1 |
- 4.8 ([[gnu::unused]])
+ 4.8 ([[gnu::unused]] )
7 (P0212R1) |
__has_cpp_attribute(maybe_unused) |
@@ -197,7 +336,7 @@
|
- constexpr if |
+ constexpr if |
P0292R2 |
7 |
__cpp_if_constexpr >= 201606 |
@@ -210,9 +349,12 @@
Template argument deduction for class templates |
- P0091R3 |
- 7 |
- __cpp_deduction_guides >= 201606 |
+ P0091R3
+ P0512R0 |
+ 7
+ 8 |
+ __cpp_deduction_guides >= 201606
+ __cpp_deduction_guides >= 201611 |
Declaring non-type template parameters with auto |
@@ -239,13 +381,13 @@
__cpp_structured_bindings >= 201606 |
- Remove Deprecated Use of the register Keyword |
+ Remove Deprecated Use of the register Keyword |
P0001R1 |
7 |
|
- Remove Deprecated operator++(bool) |
+ Remove Deprecated operator++(bool) |
P0002R1 |
7 |
|
@@ -257,7 +399,7 @@
__cpp_noexcept_function_type >= 201510 |
- __has_include for C++17 |
+ __has_include for C++17 |
P0061R1 |
5 |
|
@@ -293,7 +435,7 @@
__cpp_variadic_using >= 201611 |
- A byte type definition |
+ A byte type definition |
P0298R0 |
7 |
|
@@ -337,7 +479,7 @@
C++14 Support in GCC
- GCC has full support for the latest revision of the C++
+
GCC has full support for the previous revision of the C++
standard, which was published in 2014.
This mode is the default in GCC 6.1 and above; it can be explicitly