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

            Bug ID: 110604
           Summary: template argument deduction failed with
                    decltype(lambda)
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ted at lyncon dot se
  Target Milestone: ---

Compiling this in C++20 mode on trunk (https://godbolt.org/z/dW5cf3WrK):
```
template<typename>
struct foo {
    template<typename = decltype([]{})>
    void bar() {}
};

int main() {
    [[maybe_unused]] auto v = foo<void>();

    v.bar<>();
    v.bar();
}
```
Results in the following error:
```
<source>: In function 'int main()':
<source>:10:12: error: no matching function for call to 'foo<void>::bar<>()'
   10 |     v.bar<>();
      |     ~~~~~~~^~
<source>:4:10: note: candidate: 'template<class> void foo<
<template-parameter-1-1> >::bar() [with <template-parameter-1-1> = void]'
    4 |     void bar() {}
      |          ^~~
<source>:4:10: note:   template argument deduction/substitution failed:
<source>:11:10: error: no matching function for call to 'foo<void>::bar()'
   11 |     v.bar();
      |     ~~~~~^~
<source>:4:10: note: candidate: 'template<class> void foo<
<template-parameter-1-1> >::bar() [with <template-parameter-1-1> = void]'
    4 |     void bar() {}
      |          ^~~
<source>:4:10: note:   template argument deduction/substitution failed:
```
Possibly a duplicate of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102721,
but I'm not 100% sure.

Reply via email to