https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102644

            Bug ID: 102644
           Summary: deduction failure when having default non-type
                    template parameters that are lambdas
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: barry.revzin at gmail dot com
  Target Milestone: ---

gcc trunk with -std=c++20 rejects this example as having no matching function
call:

template <auto V1 = []{ return 0; }>
struct s {
    template <auto V2 = []{ return 1; }>
    int foo() { return 0; }
};

int main() {
    return s{}.foo();
}

gcc accepts if:

* foo()'s default argument is 1 instead of a lambda
* s is not a class template (but changing V1's default to be 0 while keeping V2
as a lambda is still an error)
  • [Bug c++/102644] New: deduction... barry.revzin at gmail dot com via Gcc-bugs

Reply via email to