https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97883
Bug ID: 97883 Summary: [C++20] Segmentation fault on template<auto> with braced initializer list A<{}> Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: arthur.j.odwyer at gmail dot com Target Milestone: --- // https://godbolt.org/z/841ahx template<auto> struct A; A<{}> a; In -std=c++17 mode, this gives an error as expected. In -std=c++20 mode, this segfaults: <source>:2:5: error: deducing from brace-enclosed initializer list requires '#include <initializer_list>' +++ |+#include <initializer_list> 1 | template<auto> struct A; 2 | A<{}> a; | ^ <source>:2:5: internal compiler error: Segmentation fault 0x1bf9b89 internal_error(char const*, ...) ???:0 0x8a5846 do_auto_deduction(tree_node*, tree_node*, tree_node*, int, auto_deduction_context, tree_node*, int) ???:0 0x8c48ac lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*, int, int) ???:0 0x9197cd finish_template_type(tree_node*, tree_node*, int) ???:0 0x87f57c c_parse_file() ???:0 0x9f7452 c_common_parse_file() ???:0 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. If you "#include <initializer_list>", you successfully suppress the first error message; but the segfault still happens in the same place. Might be related to #95291 or #97749. It's weird that this happens ONLY in C++20 mode, even though it uses nothing but C++17 features.