]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: constraint variable used in evaluated context [PR117849]
authorPatrick Palka <ppalka@redhat.com>
Fri, 4 Apr 2025 18:03:58 +0000 (14:03 -0400)
committerPatrick Palka <ppalka@redhat.com>
Fri, 4 Apr 2025 18:03:58 +0000 (14:03 -0400)
commit6e973e87e3fec6f33e97edf8fce2fcd121e53961
treea65abf9c77f3235b7be7fab7b45e6d99b8b55f00
parentae4c22ab05501940e345ee799be3aa36ffa7269a
c++: constraint variable used in evaluated context [PR117849]

Here we wrongly reject the type-requirement at parse time due to its use
of the constraint variable 't' within a template argument (an evaluated
context).  Fix this simply by refining the "use of parameter outside
function body" error path to exclude constraint variables.

PR c++/104255 tracks the same issue for function parameters, but fixing
that would be more involved, requiring changes to the PARM_DECL case of
tsubst_expr.

PR c++/117849

gcc/cp/ChangeLog:

* semantics.cc (finish_id_expression_1): Allow use of constraint
variable outside an unevaluated context.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/concepts-requires41.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/cp/semantics.cc
gcc/testsuite/g++.dg/cpp2a/concepts-requires41.C [new file with mode: 0644]