https://gcc.gnu.org/g:983cad89d6be98ed8a0723fabb9b5e652adfd2ef
commit r17-1141-g983cad89d6be98ed8a0723fabb9b5e652adfd2ef Author: Eczbek <[email protected]> Date: Fri May 22 12:57:09 2026 -0400 c++: > in requires in template argument [PR125317] PR c++/125317 gcc/cp/ChangeLog: * parser.cc (cp_parser_requirement_body): Set parser->greater_than_is_operator_p. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-requires42.C: New test. Reviewed-by: Jason Merrill <[email protected]> Diff: --- gcc/cp/parser.cc | 4 ++++ gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 86b5e89214d7..03b1ea176837 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -34949,6 +34949,10 @@ cp_parser_requirement_body (cp_parser *parser) if (!braces.require_open (parser)) return error_mark_node; + /* Within the body of a requires expression, a '>' token is always the + greater-than operator. */ + auto gto = make_temp_override (parser->greater_than_is_operator_p, true); + tree reqs = cp_parser_requirement_seq (parser); if (!braces.require_close (parser)) diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C b/gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C new file mode 100644 index 000000000000..4521908a1c1b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C @@ -0,0 +1,4 @@ +// PR c++/125317 +// { dg-do compile { target c++20 } } + +template<bool = requires { 0 > 0; }> int x;
