<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63479>63479</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang] class template argument deduction from braced initializer in non-type template parameter doesn't work
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ericniebler
      </td>
    </tr>
</table>

<pre>
    ```c++
template <unsigned long N>
struct Array {
  int value[N];
};

template <unsigned long N>
Array(const int (&)[N]) -> Array<N>;

template <Array A>
struct S {
};

int main() {
  S<{{1,2,3,4}}> t;
  (void) t;
}
```

Result:
```
<source>:14:5: error: expected expression
   14 |   S<{{1,2,3,4}}> t;
      | ^
```

Expected:
success

GCC and MSVC accept this code: https://godbolt.org/z/se6cd9eEx
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU0uP2jAQ_jWTiwVKxglJDjlAgJ66h67Uu2MP4Naxke3s69dXDuwu3T7UIktMNPO9nIwIQR8tUQfVBqptJqZ4cr4jr6XVNBjy2eDUcwer_HIk4CadfAv5OtJ4NiISA95PdmZSzDh7ZHfAd5eZEP0kI1t7L54Z1FckY9pG9iDMRFBt7qDaAr-2oL6p_1lm5gdspLMhzuSADeAKsH0VwJYtgO8uVoD3M_jPShfH649B7t9D_Oo06Y5C21m7vY17D7xPj_WmAOwRsOeAfZkoEsuOxTcqlqw_OK0SRfzpXi7F67u4Vf5CYTIR-Pr3M7wPbvKS5sjrogS-roCvGXnv_Fw8nUlGUqnwFIJ29tUNK0oGdc_-M0T6JRhUu7_43l1135yHSUoK4XbmU98zYRX7fP-1Z0JKOkcWTzow6RQl86cYzyEx4B5wf3RqcCYunT8C7l8A94FWUrW0e8pUx1XLW5FRV6yauipXFfLs1FXloFR7aPNDxRvM86EuVFFhamPTVpTpDnPk-Qp50VQV4rKm8pAXLRW1bOjQFFDmNAptlsY8jEk70yFM1K14WbeZEQOZMG8ZoqVHNjcBMS2d7xJmMUzHAGVudIjhnSXqaOb1lEbYI1RbJo0Igb19qsIfp5FsZIrUJKN2lh28G9nghSTFtNVRC6NfyDNtmXV2EZ_P9I4_Cy9GiuSZchQsYB3Zo_Pfs8mb7sPN6niahqV0I-A-Obz-Lc7efSMZAfdzrgC4n3P_CAAA__-QeD5j">