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 FeatureProposalAvailable 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