From 0210a1a410cfafd79521e15cd96682ed3d5b4943 Mon Sep 17 00:00:00 2001
From: Eczbek <eczbek.v...@gmail.com>
Date: Thu, 5 Jun 2025 14:27:48 -0400
Subject: [PATCH] c++: [PR116928]
PR c++/116928
gcc/cp/ChangeLog:
* parser.cc (cp_parser_braced_list):
gcc/testsuite/ChangeLog:
* g++.dg/parse/template32.C: New test.
c++: Fix greater-than operator in braced-init-lists [PR116928]
---
gcc/cp/parser.cc | 4 ++++
gcc/testsuite/g++.dg/parse/template32.C | 4 ++++
2 files changed, 8 insertions(+)
create mode 100644 gcc/testsuite/g++.dg/parse/template32.C
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index 86337635f48..8cfb981fe4f 100644
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -26942,6 +26942,10 @@ cp_parser_braced_list (cp_parser *parser, bool
*non_constant_p /*=nullptr*/)
location_t start_loc = cp_lexer_peek_token (parser->lexer)->location;
auto oas = make_temp_override (parser->omp_array_section_p, false);
+ /* Within a brace-enclosed initializer list, a `>' token is always the
+ greater-than operator. */
+ auto gto = make_temp_override (parser->greater_than_is_operator_p, true);
+
/* Consume the `{' token. */
matching_braces braces;
bool found_opening_brace = braces.require_open (parser);
diff --git a/gcc/testsuite/g++.dg/parse/template32.C
b/gcc/testsuite/g++.dg/parse/template32.C
new file mode 100644
index 00000000000..8229e9f5f53
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/template32.C
@@ -0,0 +1,4 @@
+// PR c++/116928
+// { dg-do compile { target c++11 } }
+
+template<int = { 0 > 0 }> struct A;
--
2.49.0