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

            Bug ID: 117472
           Summary: pack of function parameters without a name
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mpolacek at gcc dot gnu.org
  Target Milestone: ---

A test from <https://eel.is/c++draft/diff#cpp23.dcl.dcl-2> should compile in
C++23:

```
template <typename... T>
void f(T... [1]);
template <typename... T>
void g(T... ptr[1]);
int main() {
  f<int, double>(nullptr, nullptr);     // ill-formed, previously void f<int,
double>(int [1], double [1])
  g<int, double>(nullptr, nullptr);     // ok
}
```

but we emit

pack-indexing11.C:7:13: error: expected ‘,’ or ‘...’ before ‘[’ token
    7 | void f(T... [1]);
      |             ^
pack-indexing11.C: In function ‘int main()’:
pack-indexing11.C:11:18: error: cannot convert ‘std::nullptr_t’ to ‘int’
   11 |   f<int, double>(nullptr, nullptr);     // { dg-error "no matching
function" }
      |                  ^~~~~~~
      |                  |
      |                  std::nullptr_t
pack-indexing11.C:7:8: note:   initializing argument 1 of ‘void f(T ...) [with
T = {int, double}]’
    7 | void f(T... [1]);
      |        ^~~~

Reply via email to