https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109754
Bug ID: 109754 Summary: [ICE] internal compiler error: in coerce_template_parms, at cp/pt.cc:9183 Product: gcc Version: 12.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: eric.niebler at gmail dot com Target Milestone: --- Created attachment 55012 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55012&action=edit result of -freport-bug including preprocessed source similar to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105475, but not using coroutines Repro: compile attached code with -std=c++20 Result: In file included from test.cpp:1: stdexec/include/stdexec/__detail/__meta.hpp: In substitution of ‘template<class _Fn, class ... _Args> using __minvoke = stdexec::__meval<_Fn::template __f, _Args ...> [with _Fn = stdexec::__mexpand<stdexec::__tuple<stdexec::__tup::__gen_tuple_fun_fn::operator()<int, stdexec::__tup::__coerce<immovable>, const char*>(int&&, stdexec::__tup::__coerce<immovable>&&, const char*&&) const::<lambda()>::<lambda(_Self&&, _Fun&&)> > >; _Args = {stdexec::__msize}]’: stdexec/include/stdexec/__detail/__meta.hpp:431:9: required by substitution of ‘template<class _Fn, class _List> using __mapply = stdexec::__minvoke<stdexec::__mexpand<_List>, _Fn> [with _Fn = stdexec::__msize; _List = stdexec::__tuple<stdexec::__tup::__gen_tuple_fun_fn::operator()<int, stdexec::__tup::__coerce<immovable>, const char*>(int&&, stdexec::__tup::__coerce<immovable>&&, const char*&&) const::<lambda()>::<lambda(_Self&&, _Fun&&)> >]’ stdexec/include/stdexec/__detail/__tuple.hpp:491:47: required from ‘const std::size_t stdexec::tuple_size_v<stdexec::__tuple<stdexec::__tup::__gen_tuple_fun_fn::operator()<int, stdexec::__tup::__coerce<immovable>, const char*>(int&&, stdexec::__tup::__coerce<immovable>&&, const char*&&) const::<lambda()>::<lambda(_Self&&, _Fun&&)> > >’ test.cpp:22:26: required from here stdexec/include/stdexec/__detail/__meta.hpp:233:9: internal compiler error: in coerce_template_parms, at cp/pt.cc:9183 233 | using __minvoke = __meval<_Fn::template __f, _Args...>; | ^~~~~~~~~ 0x6623b1 coerce_template_parms ../../src/gcc/cp/pt.cc:9183 0x818feb instantiate_alias_template ../../src/gcc/cp/pt.cc:21719 0x818feb tsubst(tree_node*, tree_node*, int, tree_node*) ../../src/gcc/cp/pt.cc:15607 0x81c344 tsubst_decl ../../src/gcc/cp/pt.cc:14952 0x81815a instantiate_template_1 ../../src/gcc/cp/pt.cc:21643 0x81908e instantiate_template(tree_node*, tree_node*, int) ../../src/gcc/cp/pt.cc:21702 0x81908e instantiate_alias_template ../../src/gcc/cp/pt.cc:21740 0x81908e tsubst(tree_node*, tree_node*, int, tree_node*) ../../src/gcc/cp/pt.cc:15607 0x81c344 tsubst_decl ../../src/gcc/cp/pt.cc:14952 0x81815a instantiate_template_1 ../../src/gcc/cp/pt.cc:21643 0x81908e instantiate_template(tree_node*, tree_node*, int) ../../src/gcc/cp/pt.cc:21702 0x81908e instantiate_alias_template ../../src/gcc/cp/pt.cc:21740 0x81908e tsubst(tree_node*, tree_node*, int, tree_node*) ../../src/gcc/cp/pt.cc:15607 0x825bad tsubst_template_args(tree_node*, tree_node*, int, tree_node*) ../../src/gcc/cp/pt.cc:13517 0x8108fe tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../src/gcc/cp/pt.cc:20055 0x8200e8 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../src/gcc/cp/pt.cc:19491 0x81fe84 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../src/gcc/cp/pt.cc:18462 0x81fe84 instantiate_decl(tree_node*, bool, bool) ../../src/gcc/cp/pt.cc:26653 0x7313c1 maybe_instantiate_decl(tree_node*) ../../src/gcc/cp/decl2.cc:5627 0x7375ef maybe_instantiate_decl(tree_node*) ../../src/gcc/cp/decl2.cc:5614 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions.