From patchwork Fri Jan 11 22:36:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 1023790 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-493906-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="Jx/Lp9vC"; 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 43byR22LbWz9s9h for ; Sat, 12 Jan 2019 09:37:02 +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:from :to:subject:date:message-id:mime-version :content-transfer-encoding; q=dns; s=default; b=DbuZCiH3km4f24Oj I6ZhB/JtXm4Lw+2j9pOFMkd4uxRgTvH3jia6anCW4a7KsT7jF67J6UmDckK0r8dN MPz8JCR5Zm/t/wXTJRSImU0p5TA6zabBa48UXDSxPMD9wsO4A7hNzfvtg/D/iEF5 ehzsMRYrpLLLlgVlk7ANfyt1o3A= 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:from :to:subject:date:message-id:mime-version :content-transfer-encoding; s=default; bh=3tqJ2kSm9MqZlbjorEBjmf gSEwM=; b=Jx/Lp9vCkHx11kCZdq1DDw69yYCBUCHusuIm/vTnzX7Eu3JDrPcvCK mAbFcc+yST1p/s46cLp8PPLwXZWYkdmO3DbRbIyPXzxwNv8Q/MxwaexH5jzC66Hj qnL656hsz++If8+w7VIpUC85+pz+M4BxoyHPLAoh4wcw3ZKn8TiTA= Received: (qmail 51002 invoked by alias); 11 Jan 2019 22:36:54 -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 50992 invoked by uid 89); 11 Jan 2019 22:36:54 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 spammy=Hx-languages-length:1934, talk, HContent-Transfer-Encoding:8bit X-HELO: mail-qk1-f177.google.com Received: from mail-qk1-f177.google.com (HELO mail-qk1-f177.google.com) (209.85.222.177) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 11 Jan 2019 22:36:53 +0000 Received: by mail-qk1-f177.google.com with SMTP id 68so7468830qke.9 for ; Fri, 11 Jan 2019 14:36:52 -0800 (PST) Received: from orpheus.redhat.com (209-6-216-142.s141.c3-0.smr-cbr1.sbo-smr.ma.cable.rcncustomer.com. [209.6.216.142]) by smtp.gmail.com with ESMTPSA id h187sm36372125qke.46.2019.01.11.14.36.50 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 11 Jan 2019 14:36:50 -0800 (PST) From: Jason Merrill To: gcc-patches@gcc.gnu.org Subject: [C++ PATCH] PR c++/88312 - pack expansion of decltype. Date: Fri, 11 Jan 2019 17:36:48 -0500 Message-Id: <20190111223648.23961-1-jason@redhat.com> MIME-Version: 1.0 X-IsSubscribed: yes The standard doesn't really talk about an expression depending on the number of elements of a pack, but that's definitely an important form of template argument dependence. Tested x86_64-pc-linux-gnu, applying to trunk. * pt.c (instantiation_dependent_r): A template non-type parameter pack is instantiation-dependent. --- gcc/cp/pt.c | 2 ++ gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C | 9 +++++++++ gcc/cp/ChangeLog | 6 ++++++ 3 files changed, 17 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C base-commit: 0c2ebbc4659d15c2a546b75323ba6af1ff1d073b diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 84f59a2c356..f062a2b9707 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -25736,6 +25736,8 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees, case TEMPLATE_PARM_INDEX: if (dependent_type_p (TREE_TYPE (*tp))) return *tp; + if (TEMPLATE_PARM_PARAMETER_PACK (*tp)) + return *tp; /* We'll check value-dependence separately. */ return NULL_TREE; diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C b/gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C new file mode 100644 index 00000000000..c87c6bad59f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C @@ -0,0 +1,9 @@ +// PR c++/88555 +// { dg-do compile { target c++11 } } + +template struct T {}; + +template +void test() { + using Test = T; +} diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9208f1e4937..0eb669b3eac 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2019-01-11 Jason Merrill + + PR c++/88312 - pack expansion of decltype. + * pt.c (instantiation_dependent_r): A template non-type parameter + pack is instantiation-dependent. + 2019-01-11 Jason Merrill PR c++/88613 - ICE with use of const var in lambda.