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

            Bug ID: 116051
           Summary: inconsistent handling of void typedefs in otherwise
                    empty parameter lists
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ted at lyncon dot se
  Target Milestone: ---

I believe this is related to
https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#577

```
#include <functional>

template <class T>
struct Foo {
    using Sig = int(T);  // error when T is void: invalid parameter type 'void'
};

int main() {
    using T = void;
    using Sig = int(T);                          // no problem
    std::function<Sig> func = [] { return 0; };  // still no problem

    [[maybe_unused]] Foo<int> f1;                // no problem
    [[maybe_unused]] Foo<void> f2;               // error, see above

    return func();
}
```

Reply via email to