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:
parent
f43e0585fa
commit
3ddf08b3b8
@ -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.
|
||||
|
@ -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;
|
||||
|
||||
|
9
gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C
Normal file
9
gcc/testsuite/g++.dg/cpp0x/variadic-decltype1.C
Normal 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)))...>;
|
||||
}
|
Loading…
Reference in New Issue
Block a user