https://gcc.gnu.org/g:37b5126f5ece914c13558d85d986e06bbcaea892

commit r16-3357-g37b5126f5ece914c13558d85d986e06bbcaea892
Author: Eczbek <eczbek.v...@gmail.com>
Date:   Sat Aug 23 17:57:39 2025 -0400

    c++: Fix greater-than operator in braced-init-lists [PR116928]
    
            PR c++/116928
    
    gcc/cp/ChangeLog:
    
            * parser.cc (cp_parser_braced_list): Set greater_than_is_operator_p.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/parse/template33.C: New test.
    
    Reviewed-by: Jason Merrill <ja...@redhat.com>

Diff:
---
 gcc/cp/parser.cc                        | 4 ++++
 gcc/testsuite/g++.dg/parse/template33.C | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index 40223bedcc1c..9d4f5564c367 100644
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -27514,6 +27514,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/template33.C 
b/gcc/testsuite/g++.dg/parse/template33.C
new file mode 100644
index 000000000000..8229e9f5f53c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/template33.C
@@ -0,0 +1,4 @@
+// PR c++/116928
+// { dg-do compile { target c++11 } }
+
+template<int = { 0 > 0 }> struct A;

Reply via email to