https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96908
Bug ID: 96908 Summary: [c++20] substitution failure if lambda in default template param Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: bastien.penavayre at epitech dot eu Target Milestone: --- code: ``` template<const int * = ([]{}, nullptr)> // 'auto = []{}' would do the same void func() {} template<auto = []{}> void func2() {} template<class> void f() { func(); //substituion failure func2(); //substituion failure } int main() { func(); // ok func2(); // ok } ``` output: ``` source>: In function 'void f()': <source>:10:10: error: no matching function for call to 'func()' 10 | func(); //substituion failure | ^ <source>:2:6: note: candidate: 'template<const int* <anonymous> > void func()' 2 | void func() {} | ^~~~ <source>:2:6: note: template argument deduction/substitution failed: <source>:11:11: error: no matching function for call to 'func2()' 11 | func2(); //substituion failure | ^ <source>:5:6: note: candidate: 'template<auto <anonymous> > void func2()' 5 | void func2() {} | ^~~~~ <source>:5:6: note: template argument deduction/substitution failed: Compiler returned: 1 ``` can be tested in godbolt: https://godbolt.org/z/xjTPoj