https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127580
Bug ID: 127580
Summary: ICE on reflection of function template substituted
with variadic template parameters and spliced in
requires clause of generic lambda
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: eczbek.void at gmail dot com
Target Milestone: ---
https://godbolt.org/z/bPaczeWTv
```
#include <meta>
void foo(auto) {}
template<typename... targs>
void bar() {
constexpr auto info = substitute(^^foo, { ^^targs... });
[](auto arg) requires requires { [:info:](arg); } {}(0);
}
int main() {
bar<int>();
}
```
```
<source>: In substitution of 'template<class auto:9>
bar<int>()::<lambda(auto:9)> [with auto:9 = int]':
<source>:8:54: required from 'void bar() [with targs = {int}]'
8 | [](auto arg) requires requires { [:info:](arg); } {}(0);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
<source>:12:10: required from here
12 | bar<int>();
| ~~~~~~~~^~
<source>:7:41: internal compiler error: tree check: accessed elt 1 of
'tree_vec' with 0 elts in tsubst_pack_expansion, at cp/pt.cc:14424
7 | constexpr auto info = substitute(^^foo, { ^^targs... });
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
0x2c5b2c8 diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
???:0
0x2c4ff0b internal_error(char const*, ...)
???:0
0xa45599 tree_vec_elt_check_failed(int, int, char const*, int, char const*)
???:0
0xc15dc6 tsubst_requires_expr(tree_node*, tree_node*, int, tree_node*)
???:0
0xc172e8 constraints_satisfied_p(tree_node*, tree_node*)
???:0
0xe3fd01 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool,
bool)
???:0
0xbbc687 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int)
???:0
0xe7b5d6 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool,
bool, int)
???:0
0xe3d07d instantiate_decl(tree_node*, bool, bool)
???:0
0xe46eba instantiate_pending_templates(int)
???:0
0xca8048 c_parse_final_cleanups()
???:0
0xf6b928 c_common_parse_file()
???:0
/cefs/1c/1c52de22e33a05b1cabef313_gcc-trunk-20260923/bin/../libexec/gcc/x86_64-linux-gnu/17.0.0/cc1plus
-quiet -imultiarch x86_64-linux-gnu -iprefix
/cefs/1c/1c52de22e33a05b1cabef313_gcc-trunk-20260923/bin/../lib/gcc/x86_64-linux-gnu/17.0.0/
-D_GNU_SOURCE <source> -quiet -dumpdir /app/ -dumpbase output.cpp -dumpbase-ext
.cpp -masm=intel -mtune=generic -march=x86-64 -g -std=c++26
-fdiagnostics-color=always -fno-verbose-asm -freflection -o /app/output.s
```