<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/131835>131835</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang accepts partial template specialization without base
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
abellgithub
</td>
</tr>
</table>
<pre>
This fails on gcc but works on clang. Note types of `SYMS` template arguments. I think clang is wrong here, but it could be me who's wrong ;)
```
#include <cstdint>
#include <type_traits>
template <int SYMS, typename T=void>
struct arithmetic_c;
template<uint32_t SYMS>
struct arithmetic_c<SYMS, typename std::enable_if<(SYMS > 16 && SYMS < 2048)>::type>
{
arithmetic_c()
{}
};
template<int SYMS>
struct arithmetic_c<SYMS, typename std::enable_if<(SYMS > 1 && SYMS <= 16)>::type >
{
arithmetic_c()
{}
};
int main()
{
arithmetic_c<32> corrector;
return 0;
}
```
[Compiler Explorer](https://godbolt.org/z/MnhqhWofa)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVE2PpDYQ_TXVl9K2TJmP5sChh56WcthcdqUop5ExbnDWYGIXM9n99ZFpMpudSU6JZAnJfu_VeyWqVIx2mI1poHiA4nJQK48-NKozzg2Wx7U7dL7_2nwebcSbsi6in3HQGruV8cWHL9uFdmoejvizZ4P8dTER_Q2hFJ9-_fgJSoFspsUpNqjCsE5m5njEn5BHO3-5c9FGfAl-HnA0wQC1m75l1H51PXYGJ4Mvoweq_gKCfACqQZzTKcV-xBlI2lm7tTcIstWRezszyMd3T8noEwdlOe7P4vxqFGRrZ8YtALVbqFlNBj-DvDx7298ZkcOqGVWwPE6GrX7SydYPUiDb1c4s6WmX-3dm-65c5B7kGeTZzKpz5sneQLZApwREkI-YlQhUApW4X7VIIj-lzsjHOzWJ7QGr5A0Rf6xLp3sj00OCVJcNe_mnKK9N-X9TvA0B8oJZ-TYF_rcYyfuk7PyK3IXe2JeULGkfgtHsw52eRIPhNcwodsG7_t__PHGG4qH102KdCfj4x-J8MAGKC9BpZF5iikJXoOvg-847PvowAF2_AV0_zuPv4y_-poDqQ9_Ivpa1Opgmq3KSGdV5cRibnKjKTFVS1lc3mVEpqlt2E9Utz-qiq-uDbUhQIWR2yoq8FsUxKwut61OVZ13eKSEhF2ZS1h2de55S-YONcTVNJrOTLA4uTX7ctgHRNplAlBZDaBLhQ7cOEXLhbOT4XYItO9PcB1lpbRaOuKjAVrnvox8Xo61y9pti62d8sTz6lbFT0RzW4Jo3DdqWz1H7CeiaCu2fD0vwvxnNQNfNeAS67t6fG_ozAAD__6q0dQU">