https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90480
--- Comment #2 from Luke Dalessandro <ldalessandro at gmail dot com> --- I'm hitting this with the following similar, but different snippet. Maybe it will help with this. #include <array> struct Foo { int operator()(int i) { return 0; } template <std::size_t N> auto operator()(std::array<int, N> ids) { return std::apply([&](auto...) { return operator()(0); }, ids); } }; int main() { Foo foo; foo(std::array{0, 1}); }