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