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.
+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
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. */
--- /dev/null
+// { 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;
+}