https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92556
Bug ID: 92556 Summary: ICE if using dependent name inside lambda expression in simple-requirement Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: boostcpp at gmail dot com Target Milestone: --- This code produced ICE on GCC 10 2019-11-12. template < typename T > requires requires { // ICE []{ T::value ; } ; } void f() { } struct S { inline static int value = 0 ; } ; int main () { // ill-formed. f< int >() ; // should be well-formed? f< S >() ; } https://wandbox.org/permlink/cIj1qRiKzEh9ZYfw If my understanding on P0315r4 is right, f<int> is ill-formed, and f<S> is well-formed. GCC messages. prog.cc: In lambda function: prog.cc:5:9: internal compiler error: in dependent_type_p, at cp/pt.c:25933 5 | []{ T::value ; } ; | ^ 0x5a50dc dependent_type_p(tree_node*) ../../source/gcc/cp/pt.c:25933 0x7062e7 dependent_scope_p(tree_node*) ../../source/gcc/cp/pt.c:25968 0x7062e7 tsubst_qualified_id ../../source/gcc/cp/pt.c:15852 0x6e3633 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../source/gcc/cp/pt.c:19081 0x6ec286 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../source/gcc/cp/pt.c:18753 0x6ec286 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:18411 0x6eb71b tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:17497 0x6eb71b tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:17526 0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:17497 0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:17814 0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:17497 0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:17814 0x7018e5 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:17497 0x7018e5 tsubst_lambda_expr(tree_node*, tree_node*, int, tree_node*) ../../source/gcc/cp/pt.c:18707 0x6e56c3 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../source/gcc/cp/pt.c:20099 0x6ec286 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../source/gcc/cp/pt.c:18753 0x6ec286 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../source/gcc/cp/pt.c:18411 0x61ef93 tsubst_requires_expr(tree_node*, tree_node*, int, tree_node*) ../../source/gcc/cp/constraint.cc:1818 0x6e4e49 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../source/gcc/cp/pt.c:20130 0x6ec286 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../source/gcc/cp/pt.c:18753 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.