g++ crashes with internal compiler error: Segmentation fault when trying to instantiate the following template class: template<typename Creator> class NamedResourceFactory { using ResourceType = decltype(Creator())::type::pointer; };
Please provide a full testcase.
The following code: //--------------- template<typename Creator> class NamedResourceFactory { using ResourceType = decltype(Creator())::type::pointer; }; int main(){} //--------------- compiled against gcc 4.9.0, 5.1.0, 5.2.0 results in the following output: <quote> prog.cc:4:26: internal compiler error: Segmentation fault using ResourceType = decltype(Creator())::type::pointer; ^ 0x94d21f crash_signal ../../gcc-4.9.0/gcc/toplev.c:337 0x56c94a resolve_typename_type(tree_node*, bool) ../../gcc-4.9.0/gcc/cp/pt.c:21385 0x5b1c01 cp_parser_nested_name_specifier_opt ../../gcc-4.9.0/gcc/cp/parser.c:5188 0x5bcc13 cp_parser_id_expression ../../gcc-4.9.0/gcc/cp/parser.c:4713 0x5bd5ff cp_parser_parse_and_diagnose_invalid_type_name ../../gcc-4.9.0/gcc/cp/parser.c:3024 0x5aa3e7 cp_parser_type_specifier_seq ../../gcc-4.9.0/gcc/cp/parser.c:18139 0x5ba452 cp_parser_type_id_1 ../../gcc-4.9.0/gcc/cp/parser.c:18000 0x5bf069 cp_parser_type_id ../../gcc-4.9.0/gcc/cp/parser.c:18040 0x5bf069 cp_parser_alias_declaration ../../gcc-4.9.0/gcc/cp/parser.c:16135 0x5a43a5 cp_parser_member_declaration ../../gcc-4.9.0/gcc/cp/parser.c:20186 0x5a7f50 cp_parser_member_specification_opt ../../gcc-4.9.0/gcc/cp/parser.c:20093 0x5a7f50 cp_parser_class_specifier_1 ../../gcc-4.9.0/gcc/cp/parser.c:19321 0x5a7f50 cp_parser_class_specifier ../../gcc-4.9.0/gcc/cp/parser.c:19548 0x5a7f50 cp_parser_type_specifier ../../gcc-4.9.0/gcc/cp/parser.c:14337 0x5be620 cp_parser_decl_specifier_seq ../../gcc-4.9.0/gcc/cp/parser.c:11573 0x5c2d63 cp_parser_single_declaration ../../gcc-4.9.0/gcc/cp/parser.c:23159 0x5c3224 cp_parser_template_declaration_after_export ../../gcc-4.9.0/gcc/cp/parser.c:23035 0x5cb639 cp_parser_declaration ../../gcc-4.9.0/gcc/cp/parser.c:10973 0x5ca1a8 cp_parser_declaration_seq_opt ../../gcc-4.9.0/gcc/cp/parser.c:10895 0x5cb9aa cp_parser_translation_unit ../../gcc-4.9.0/gcc/cp/parser.c:4030 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. 1 Finish </quote> The problem seems to be fixed in the current head (Tested: gcc HEAD 6.0.0 20160311 (experimental)), where the normal compiler diagnostics is produced: <quote> prog.cc:4:26: error: need 'typename' before 'typename decltype (Creator())::type::pointer' because 'typename decltype (Creator())::type' is a dependent scope using ResourceType = decltype(Creator())::type::pointer; </quote>
Created attachment 37992 [details] test case g++ -m64 -g -Wall -Wextra -pipe -fvisibility=default -x c++ -std=c++14 -fPIC example.cpp results in a crash
Provided a testcase a long time ago.
The first revision that crashes is r208040 (gcc 4.9.0). It was fixed in r227098 (gcc 6.0.0) to resolve bug 63693. It seems this bug can be closed as a duplicate then, or what's the process here?
Dup. *** This bug has been marked as a duplicate of bug 63693 ***