]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++: > in requires in template argument [PR125317]
authorEczbek <eczbek.void@gmail.com>
Fri, 22 May 2026 16:57:09 +0000 (12:57 -0400)
committerJason Merrill <jason@redhat.com>
Mon, 1 Jun 2026 18:11:36 +0000 (14:11 -0400)
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 <jason@redhat.com>
gcc/cp/parser.cc
gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C [new file with mode: 0644]

index 86b5e89214d7df77d93447fe26b82eb122f8b51e..03b1ea1768375af483f8868f8d9cb57f13b19e90 100644 (file)
@@ -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 (file)
index 0000000..4521908
--- /dev/null
@@ -0,0 +1,4 @@
+// PR c++/125317
+// { dg-do compile { target c++20 } }
+
+template<bool = requires { 0 > 0; }> int x;