<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/147370>147370</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang] `typeof(*fixed-type enumeration*)` resolves to the underlying type, unlike GCC
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
fuhsnn
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/zce5YzqjY
```C
#include <stdio.h>
int main(void) {
{
enum { A };
enum { B };
printf("%d\n", _Generic( A , typeof(B):1, default:0)); // Both 1
printf("%d\n", _Generic(typeof(A), typeof(B):1, default:0)); // Both 1
}
{
printf("%d\n", _Generic(typeof(enum { A }), typeof(enum { B }):1, default:0)); // Both 0
}
{
enum : int { A };
enum : int { B };
printf("%d\n", _Generic( A , typeof(B):1, default:0)); // Clang: 1, GCC: 0
printf("%d\n", _Generic(typeof(A), typeof(B):1, default:0)); // Clang: 1, GCC: 0
}
{
printf("%d\n", _Generic(typeof(enum : int { A }), typeof(enum : int { B }):1, default:0)); // Both 0
}
}
```
It seems that GCC treats `typeof` of fixed-type enumerations as `enum : int` and concludes they are not compatible. Clang, on the contrary, sees them as `int` and thus compatible.
I didn't find in n3550 pdf when should fixed-type enumerations drop their "is enum" property, so can't say which is more conformant, though I prefer the Clang behavior as more intuitive.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVc2O4zYMfhr6Qkyg0LGdHHxwMs1iH2FPhWzRsba25EpyttmnLySn22BmdoBBizZwEpniz0d-lCi91xfDXENxhOI5k0sYrKv7ZfDGZK1Vt3oIYfaQN0BnoPPFqtaOYWPdBej8PX47Lr58__3rFxBNfEqxPqf4Qrk23bgoRshPPihtNwPkv4BotAk4SW2A9lerFdABoTqCaBDxYRU_bJYpirBBqJ4hf3Pv-HpvdtqEHmgPRECFguJk0vKEv35iw053QPu7coNRHm4z22hyBDpA3myjUHEvlzFA3ogojRtHXMuBRxsG3H446I84TfL4TwPH1N-q3AfBvCj0C2QvSv0BmCJC-hnG1W3eYOyId1l-0Hlk-7-g-TRKc4kAkuan0ymuxf9A-7tA_tU2eMXIm-3wipOPtsUP2Pffv66P9Tb5HNAzTx7DIENMF4NjGTxCKe5ISoG2x17_weopilKzsJNBW-NRJtVHrNFAGoWdXW-m6JtvKB2jsQE7O80y6Hbkzb3YdEJrolI0CU66WxR5Xi2ne4gHz2FY_KOfeyqotDJAVcBeG4XaoMmLQuCsevw2sEE_2GVUP01FOTvHiNohEGmfdoEIZ2dndmGFZbGTaxQvb_ht0N2A2uNkXcLfWzdJExKTg10uA37G2XHPLmWYMsaWB3nV1sXUkqE2YdFBX3mTqTpXh_wgM663VbE9bHMSu2yoq77su5ZULlpJ3WGfVwWV1DFzW1Y7KTNdk6BCVKLa7vOcdpvqIPv2UG6Jd6qsqg52giepx804Xqc4YDLt_cL1dlfllchG2fLo06Ai6lZmKM4sV0eDp3a5eNiJUfvg_3YRdBjTdFu5LJ4fOieeh-btagOlE1oKdOzteI1c21ShxSh2402bSzoKsZCLGfVvHLszW9z4cmDqMCztprMT0DnCuv89zc5-5S4AnVOaHuh8z_Ra058BAAD__5wKKXI">