https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64227
Bug ID: 64227 Summary: Forwarding an argument of a function template to a generic lambda causes a compiler crash Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ville.voutilainen at gmail dot com CC: jason at redhat dot com The problem occurs with forward and move, but not with a static_cast<T&&>(t). #include <utility> template<typename T> auto greater_than(T&& t) { return [val = std::forward<T&&>(t)] (const auto& arg) { return arg > val; }; } template<typename Functor> void g(Functor f) { for (int i = 0; i < 100000; i++) f(i); } int main() { g(greater_than(10)); } [ville@localhost ~]$ g++ --std=c++1z -c lambda-bada-boom.cpp lambda-bada-boom.cpp: In function ‘auto greater_than(T&&)’: lambda-bada-boom.cpp:6:36: internal compiler error: Segmentation fault return [val = std::forward<T&&>(t)] (const auto& arg) { return arg > val; }; ^ 0xc954af crash_signal ../../gcc/toplev.c:359 0xf1bb0a tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) ../../gcc/tree.h:2886 0xf1bb0a variably_modified_type_p(tree_node*, tree_node*) ../../gcc/tree.c:8809 0x7d9b79 add_capture(tree_node*, tree_node*, tree_node*, bool, bool) ../../gcc/cp/lambda.c:486 0x6e6f9f cp_parser_lambda_introducer ../../gcc/cp/parser.c:9252 0x6e6f9f cp_parser_lambda_expression ../../gcc/cp/parser.c:8964 0x6e6f9f cp_parser_primary_expression ../../gcc/cp/parser.c:4447 0x6ebe0d cp_parser_postfix_expression ../../gcc/cp/parser.c:6089 0x6eca19 cp_parser_unary_expression ../../gcc/cp/parser.c:7370 0x6ed7a7 cp_parser_binary_expression ../../gcc/cp/parser.c:8104 0x6edd1f cp_parser_assignment_expression ../../gcc/cp/parser.c:8347 0x6f036d cp_parser_expression ../../gcc/cp/parser.c:8501 0x6e60d2 cp_parser_jump_statement ../../gcc/cp/parser.c:10995 0x6e60d2 cp_parser_statement ../../gcc/cp/parser.c:9651 0x6e6842 cp_parser_statement_seq_opt ../../gcc/cp/parser.c:10039 0x6e699b cp_parser_compound_statement ../../gcc/cp/parser.c:9993 0x6f3e8b cp_parser_function_body ../../gcc/cp/parser.c:19093 0x6f3e8b cp_parser_ctor_initializer_opt_and_function_body ../../gcc/cp/parser.c:19129 0x6fe1ca cp_parser_function_definition_after_declarator ../../gcc/cp/parser.c:23369 0x700103 cp_parser_function_definition_from_specifiers_and_declarator ../../gcc/cp/parser.c:23281 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.