https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109692
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P4 Keywords| |error-recovery, | |ice-on-valid-code, | |rejects-valid --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- So indeed GCC 11.2 doesn't ICE but errors like t.C: In instantiation of 'static void variadic<params>::bug() [with params = {int}]': t.C:13:29: required from here t.C:9:47: error: no match for call to '(variadic<int>::bug()::<lambda()>) ()' 7 | ([]<bool x = always_true<params>>() { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8 | if constexpr (x) callee<params>(); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9 | }(), ...); | ~^~ t.C:7:26: note: candidate: 'template<bool x> variadic<int>::bug()::<lambda()>' 7 | ([]<bool x = always_true<params>>() { | ^ t.C:7:26: note: template argument deduction/substitution failed: but I regard we should accept this. Given the ICE is error-recovery the regression should be P4 and that we reject the code isn't a regression. Separating these bugs might be nice. Since it's marked as regression it's P4.