aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEczbek <eczbek.void@gmail.com>2025-08-23 17:57:39 -0400
committerJason Merrill <jason@redhat.com>2025-08-23 17:57:39 -0400
commit37b5126f5ece914c13558d85d986e06bbcaea892 (patch)
tree811b813984af9f264a74cd19f0b7776f5c4d69eb
parent05b1727c06b70386988182259f461bf7e5b239dc (diff)
downloadgcc-37b5126f5ece914c13558d85d986e06bbcaea892.zip
gcc-37b5126f5ece914c13558d85d986e06bbcaea892.tar.gz
gcc-37b5126f5ece914c13558d85d986e06bbcaea892.tar.bz2
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 <jason@redhat.com>
-rw-r--r--gcc/cp/parser.cc4
-rw-r--r--gcc/testsuite/g++.dg/parse/template33.C4
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index 40223be..9d4f556 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 0000000..8229e9f
--- /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;