<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/77377>77377</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Class template partial specialization with concept-auto non-type parameter is not supported
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Fedr
</td>
</tr>
</table>
<pre>
In this program
```
#include <concepts>
template <auto>
struct A;
template <std::same_as<int> auto p>
struct A<p> {};
A<0> a;
```
`A<auto>` is a class template with non-type parameter, and `A<std::same_as<int> auto>` is its specialization for `int` parameters. The program is accepted by GCC and MSVC, but Clang complains:
```
error: class template partial specialization is not more specialized than the primary template [-Winvalid-partial-specialization]
```
Online demo: https://godbolt.org/z/ee4TcPY5K
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMk0GPmzwQhn-NuVhExoZADhwSsnz6VFWt1FWrniqDJ8GVsZE97Cr76yuz2aVNt1WlKAje8TvPeGZkCPpsAWpSHEhxTOSMg_N1C8onnVOX-n9LcdCBTt6dvRwJOxK2J1t2_T2_cqFtb2YFlIimd7aHCQMRd1d5-UcYJyNxCZEzulc5oJ97pHsiDn-KD6iI2BOxD3KEbzIQ0WiLRNzR6ESnN7ya-JGS8kDK441zVNlyeBVuCtqy_U-YW0Z1oJL2RoZAX8EeNQ7UOpviZQI6SS9HQPCEN1RaRa8mf2df7TUGGibotTT6SaJ2lp6cjy4xfMvWBGFD7wd46ciC1scbB0W7C_2veU7__tPnJqJ0M9LGSHumvYvg2obI81bZ4L3zROxvC52kRy3NLZ4O1Dqko_OwSqAoDjIOTSTUo_SX1YgUh_SLtg_SaJVeXdNfXUlxfJPtgzXaAlUwukg4IE5LHbwlvD071TmDG-fPhLdPhLcA-X3_8WvxLlG1UDuxkwnUWcnyMt_xTCRDXQLbFbKvFFd5VgCD7YmfSlaJKqsKyGSia854zjJW8YxvC7GpVN6dsqrrRNdlImckZzBKbTbGPIwxd6JDmKEuS1GWiZEdmLDsFecWHukiEs7jmvk6nkm7-RxIzowOGFYX1Gigbv6pB8sMXjcuXZbh94F8aVSYp8l5BJXM3tQ3N6hxmLtN70bC20hyfaSTd9-hR8LbhT8Q3i71_QgAAP__F_xUxw">