https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84125
Bug ID: 84125
Summary: [8 Regression] ICE in generic lambda when
static_assert argument is implicitly converted to bool
Product: gcc
Version: 8.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: benni.buch at gmail dot com
Target Milestone: ---
struct X{ constexpr operator bool()const{ return true; } };
int main(){
[](auto){
static_assert(X{});
};
}
$ g++ -std=c++14 main.cpp
main.cpp: In lambda function:
main.cpp:5:27: internal compiler error: in build_address, at cp/typeck.c:5738
static_assert(X{});
^
0x63818d build_address(tree_node*)
../../gcc/gcc/cp/typeck.c:5738
0x7f1385 add_function_candidate
../../gcc/gcc/cp/call.c:2168
0x7f268b add_candidates
../../gcc/gcc/cp/call.c:5527
0x7ee84e add_candidates
../../gcc/gcc/cp/call.c:5438
0x7ee84e build_user_type_conversion_1
../../gcc/gcc/cp/call.c:3851
0x7efbd1 implicit_conversion
../../gcc/gcc/cp/call.c:1899
0x7ec420 perform_implicit_conversion_flags(tree_node*, tree_node*, int, int)
../../gcc/gcc/cp/call.c:10542
0x976168 finish_static_assert(tree_node*, tree_node*, unsigned int, bool)
../../gcc/gcc/cp/semantics.c:8645
0x8dde71 cp_parser_static_assert
../../gcc/gcc/cp/parser.c:13893
0x90877e cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:12823
0x908e29 cp_parser_declaration_statement
../../gcc/gcc/cp/parser.c:12420
0x8e722b cp_parser_statement
../../gcc/gcc/cp/parser.c:10869
0x8e8170 cp_parser_statement_seq_opt
../../gcc/gcc/cp/parser.c:11218
0x8e96ae cp_parser_lambda_body
../../gcc/gcc/cp/parser.c:10632
0x8e96ae cp_parser_lambda_expression
../../gcc/gcc/cp/parser.c:10137
0x8e96ae cp_parser_primary_expression
../../gcc/gcc/cp/parser.c:5257
0x8fb40c cp_parser_postfix_expression
../../gcc/gcc/cp/parser.c:7026
0x8fbfe0 cp_parser_unary_expression
../../gcc/gcc/cp/parser.c:8281
0x8dcb5f cp_parser_cast_expression
../../gcc/gcc/cp/parser.c:9049
0x8dd36a cp_parser_binary_expression
../../gcc/gcc/cp/parser.c:9150
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.
$ g++ --version
g++ (GCC) 8.0.1 20180130 (experimental)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Boost.Hana test suite has some test cases that run into this!
Known to work with GCC 6.3:
$ g++-6 --version
g++-6 (Ubuntu/Linaro 6.3.0-18ubuntu2~16.04) 6.3.0 20170519
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.