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

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I am not saying this is correct but GCC is acting like the following code:
```
typedef double T;
template<int N>
void f(const T(&arr)[N], int asdf = 468)
{
  __builtin_printf("f<N>()\n");
}

void f(const T* arr, int n, int asdf = 0)
{
  __builtin_printf("f(ptr,n,asdf)\n");
}
template<int N>
void g(const double(&arr)[N], int asdf = 468)
{
  f(arr, asdf);
}

int main() {
    double x[] = {1.0, 2.0, 3.0};
    f(x);
    g(x);
    return 0;
}
```

While clang is acting for the inherited constructor if g was defined like:
```
template<int N>
void g(const double(&arr)[N], int asdf = 468)
{
  f<N>(arr, asdf);
}
```

I have no idea which is correct.

Reply via email to