mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-26 02:30:30 +08:00
c++: Fix template parm with dependent type in concepts.
While looking at PR94186 I also noticed this regression; if a non-type template parameter uses a type parameter in its type, we need to map both template parameters. gcc/cp/ChangeLog 2020-03-24 Jason Merrill <jason@redhat.com> * pt.c (any_template_parm_r): Look into the type of a non-type template parm.
This commit is contained in:
parent
6e771c087b
commit
5c16174184
@ -1,3 +1,8 @@
|
||||
2020-03-24 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* pt.c (any_template_parm_r): Look into the type of a non-type
|
||||
template parm.
|
||||
|
||||
2020-03-24 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cp-tree.h (cp_expr): When constructing from an expr and a
|
||||
|
@ -10431,6 +10431,7 @@ any_template_parm_r (tree t, void *data)
|
||||
WALK_SUBTREE (TREE_OPERAND (t, 1));
|
||||
break;
|
||||
|
||||
case TEMPLATE_PARM_INDEX:
|
||||
case PARM_DECL:
|
||||
/* A parameter or constraint variable may also depend on a template
|
||||
parameter without explicitly naming it. */
|
||||
|
11
gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C
Normal file
11
gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C
Normal file
@ -0,0 +1,11 @@
|
||||
// { dg-do compile { target concepts } }
|
||||
|
||||
template<class X, X x>
|
||||
concept C = requires {
|
||||
requires x; // { dg-error "bool" }
|
||||
};
|
||||
|
||||
int main() {
|
||||
C<int, 0>;
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user