<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">