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.