From patchwork Thu Oct 11 12:35:28 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 190891 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id E78C92C008E for ; Thu, 11 Oct 2012 23:36:11 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1350563772; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Message-ID:Date:From:User-Agent:MIME-Version: To:Subject:Content-Type:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=fkKsyjQo9NjV9b7xH30Cp/Ai0Lk=; b=E2FLh1uxIAUPrVM r5nyutadrKzhq72wdAWDHlkOf0/1Q9LYbiLZLXEzh9ub3L21skeVV/D7AKTl2oG4 b1kKRgaLEKQ4GnP3eN2v6EwS4d/5noeQiVuB2ZfIkBEZl5Cpz6lWbSRdr+B1v/68 yK6H7AxIyuS9x4G84vF84RV1T9/g= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=OpgTQ+iUTBfcFDdt9o8CNNWnuNJ+PsY5d6rwEv3SObnROTRcVVV4L47sggl71n 9IaXIcLfsFoZQiVIZkJMBRBbyt+Y66GjP6ByairrQ7pyUsIVVXlXushjtFllttBV pStYzoxRMxr2EUCqKKun+44hJzhSdMaMxAXckV8bfBbbI=; Received: (qmail 14085 invoked by alias); 11 Oct 2012 12:35:49 -0000 Received: (qmail 13558 invoked by uid 22791); 11 Oct 2012 12:35:44 -0000 X-SWARE-Spam-Status: No, hits=-7.9 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, RCVD_IN_DNSWL_HI, RCVD_IN_HOSTKARMA_NO, RCVD_IN_HOSTKARMA_YE, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from acsinet15.oracle.com (HELO acsinet15.oracle.com) (141.146.126.227) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 11 Oct 2012 12:35:34 +0000 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by acsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q9BCZVqD015343 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 11 Oct 2012 12:35:32 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q9BCZVko006001 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 11 Oct 2012 12:35:31 GMT Received: from abhmt119.oracle.com (abhmt119.oracle.com [141.146.116.71]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q9BCZVUf032739; Thu, 11 Oct 2012 07:35:31 -0500 Received: from [192.168.1.4] (/79.25.197.249) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 11 Oct 2012 05:35:30 -0700 Message-ID: <5076BD10.30702@oracle.com> Date: Thu, 11 Oct 2012 14:35:28 +0200 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120825 Thunderbird/15.0 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" , libstdc++ Subject: [v3] std::common_type testsuite tweaks X-IsSubscribed: yes 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 Hi contributed by Daniel. Tested again and committed. Paolo. /////////////////////// 2012-10-11 Daniel Krugler * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc: Update / extend. * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc: Likewise. * testsuite/20_util/duration/requirements/sfinae_friendly_1.cc: Likewise. .../common_type/requirements/sfinae_friendly_1.cc | 62 ++++++++++++-------- .../common_type/requirements/sfinae_friendly_2.cc | 6 +- .../duration/requirements/sfinae_friendly_1.cc | 9 ++- 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc b/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc index c23521f..f73c6cc 100644 --- a/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc +++ b/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc @@ -163,20 +163,23 @@ namespace std { }; } -static_assert(is_type, int>(), ""); -static_assert(is_type, ScEn>(), ""); -static_assert(is_type, UnscEn>(), ""); -static_assert(is_type, int>(), ""); +#ifdef HAS_53000_FIXED +static_assert(is_type, int&&>(), ""); +static_assert(is_type, ScEn&&>(), ""); +static_assert(is_type, UnscEn&&>(), ""); +#endif static_assert(is_type, int>(), ""); -static_assert(is_type, int>(), ""); -static_assert(is_type, int>(), ""); -static_assert(is_type, int>(), ""); -static_assert(is_type, S>(), ""); -static_assert(is_type, const S>(), ""); +#ifdef HAS_53000_FIXED +static_assert(is_type, int&&>(), ""); +static_assert(is_type, int&&>(), ""); +static_assert(is_type, int&&>(), ""); +static_assert(is_type, S&&>(), ""); +static_assert(is_type, const S&&>(), ""); static_assert(is_type, - std::initializer_list>, std::initializer_list>(), ""); -static_assert(is_type, B>(), ""); -static_assert(is_type, B>(), ""); + std::initializer_list>, std::initializer_list&&>(), ""); +static_assert(is_type, B&&>(), ""); +static_assert(is_type, B&&>(), ""); +#endif static_assert(is_type, void*>(), ""); static_assert(is_type, void*>(), ""); static_assert(is_type, const volatile void*>(), ""); @@ -189,10 +192,15 @@ static_assert(is_type, void>(), ""); static_assert(is_type, void>(), ""); static_assert(is_type, int>(), ""); static_assert(is_type, int&>(), ""); -static_assert(is_type, int>(), ""); +#ifdef HAS_53000_FIXED +static_assert(is_type, int&&>(), ""); +static_assert(is_type, const int&&>(), ""); +#endif static_assert(is_type, const U>(), ""); static_assert(is_type, U&>(), ""); -static_assert(is_type, U>(), ""); +#ifdef HAS_53000_FIXED +static_assert(is_type, U&&>(), ""); +#endif static_assert(is_type, int D::*>(), ""); static_assert(is_type, int D::*>(), ""); static_assert(is_type, @@ -201,7 +209,9 @@ static_assert(is_type, int (D::*)()>(), ""); static_assert(is_type, int (D::*)() const>(), ""); -static_assert(is_type, int*>(), ""); +#ifdef HAS_53000_FIXED +static_assert(is_type, int(&&)[3]>(), ""); +#endif static_assert(is_type, const int*>(), ""); static_assert(is_type, void(&)()>(), ""); @@ -213,14 +223,18 @@ static_assert(is_type, static_assert(is_type, void(&)()>(), ""); static_assert(is_type, int>, int>(), ""); +#ifdef HAS_53000_FIXED static_assert(is_type, ImplicitTo>, - ImplicitTo>(), ""); + ImplicitTo&&>(), ""); +#endif static_assert(is_type, int, ImplicitTo>, int>(), ""); +#ifdef HAS_53000_FIXED static_assert(is_type, ExplicitTo>, - ExplicitTo>(), ""); + ExplicitTo&&>(), ""); static_assert(is_type, - decltype(lmd1)>(), ""); + decltype(lmd1)&&>(), ""); +#endif static_assert(is_type, decltype(lmd1)&>(), ""); static_assert(is_type, @@ -248,12 +262,12 @@ static_assert(is_type, Abstract*>(), ""); #ifdef HAS_53000_FIXED static_assert(is_type, - Abstract>(), ""); + Abstract&&>(), ""); static_assert(is_type, Abstract>(), ""); -static_assert(is_type, Ukn>(), ""); + volatile Abstract&&>, const volatile Abstract&&>(), ""); +static_assert(is_type, Ukn&&>(), ""); static_assert(is_type, - Ukn>(), ""); + const volatile Ukn&&>(), ""); #endif static_assert(is_type, RX12>(), ""); @@ -323,8 +337,10 @@ void test(int i) auto local_lmd1 = [=](int, double) { return i + i; }; auto local_lmd2 = [=](int, double) { return i - i; }; +#ifdef HAS_53000_FIXED static_assert(is_type, decltype(local_lmd1)>(), ""); + decltype(local_lmd1)>, decltype(local_lmd1)&&>(), ""); +#endif static_assert(is_type, decltype(local_lmd1)>(), ""); static_assert(is_type constexpr -std::array::type, sizeof...(Args)> +std::array::type>::type, + sizeof...(Args)> make_array(Args&&... args) // { dg-error "invalid use" } { - typedef typename std::common_type::type CT; + typedef typename std::decay::type>::type + CT; return std::array{static_cast (std::forward(args))...}; } diff --git a/libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc b/libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc index 48b0197..cf53a21 100644 --- a/libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc +++ b/libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc @@ -21,6 +21,9 @@ #include #include +//TODO: Uncomment this once gcc bug 53000 has been resolved: +//#define HAS_53000_FIXED + // Helper types: struct has_type_impl { @@ -52,8 +55,10 @@ typedef std::chrono::duration din; typedef std::chrono::duration ddn; typedef std::chrono::duration dim; -static_assert(is_type, din>(), ""); -static_assert(is_type, din>(), ""); +#ifdef HAS_53000_FIXED +static_assert(is_type, din&&>(), ""); +static_assert(is_type, din&&>(), ""); +#endif static_assert(is_type, ddn>(), ""); static_assert(is_type, ddn>(), "");