https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103876
Bug ID: 103876 Summary: Parameter pack not expanded in lambda within static_assert in a fold-expression of a lambda Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: johelegp at gmail dot com CC: johelegp at gmail dot com Target Milestone: --- See https://godbolt.org/z/5W1fYn7E4. ```C++ void f() { [](auto... op) { (..., void([] { static_assert([]<class T> { return requires(T v) { op(v); }; }.template operator()<int>()); })); }([](...) {}); } ``` ``` In instantiation of 'f()::<lambda(auto:1 ...)> [with auto:1 = {f()::<lambda(...)>}]': <source>:8:4: required from here <source>:5:16: error: parameter packs not expanded with '...': 5 | return requires(T v) { op(v); }; | ^~~~~~~~~~~~~~~~~~~~~~~~ <source>:5:16: note: 'op' <source>:6:33: error: could not convert '<lambda closure object>f()::<lambda(auto:1 ...)>::<lambda()>::<lambda()>().f()::<lambda(auto:1 ...)>::<lambda()>::<lambda()>()' from 'void' to 'bool' 4 | static_assert([]<class T> { | ~~~~~~~~~~~~~ 5 | return requires(T v) { op(v); }; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 | }.template operator()<int>()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~ | | | void" ```