PR c++/88312 - pack expansion of decltype.

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.

	* pt.c (instantiation_dependent_r): A template non-type parameter
	pack is instantiation-dependent.

From-SVN: r267860
This commit is contained in:
Jason Merrill 2019-01-11 17:37:01 -05:00 committed by Jason Merrill
parent f43e0585fa
commit 3ddf08b3b8
3 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2019-01-11 Jason Merrill <jason@redhat.com>
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 <jason@redhat.com>
PR c++/88613 - ICE with use of const var in lambda.

View File

@ -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;

View File

@ -0,0 +1,9 @@
// PR c++/88555
// { dg-do compile { target c++11 } }
template <class ...> struct T {};
template <int ...Indices>
void test() {
using Test = T<decltype((Indices, char(0)))...>;
}