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;