diff options
author | Eczbek <eczbek.void@gmail.com> | 2025-08-23 17:57:39 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2025-08-23 17:57:39 -0400 |
commit | 37b5126f5ece914c13558d85d986e06bbcaea892 (patch) | |
tree | 811b813984af9f264a74cd19f0b7776f5c4d69eb | |
parent | 05b1727c06b70386988182259f461bf7e5b239dc (diff) | |
download | gcc-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.cc | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/template33.C | 4 |
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; |