<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/129213>129213</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang 10 Incorrectly Accepts Invalid Enum Base Type Syntax enum class a : int b;
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
starbugs-qurong
</td>
</tr>
</table>
<pre>
Clang 10 erroneously compiles code containing an invalid enum base type declaration (enum class a : int b;), while MSVC/GCC correctly reject it. This violates the C++ standard syntax rules.
For the following code test.cpp:
```
template <typename T>
void qux() {
enum class a : int b; // Invalid syntax
}
int main() {
qux<int>();
return 0;
}
```
Compile with Clang 10:
clang++ -std=c++11 test.cpp
Expected Result:
Compilation fails with a syntax error (as in MSVC/GCC).
Actual Result:
Clang 10 compiles the code without errors.
Environment:
Compiler: Clang 10.0.0
Flags: -std=c++11
Compiler Explorer link: https://godbolt.org/z/P3sa4EKhd
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U12PozgQ_DXmpTXINGQDDzwQJpxWp5NOt6N7N9AE3xmbtU1mcr_-5Jjs7IdGihRhu6u7qrqEc_KiiWp2OLHDcyI2PxtbOy9sv13c09fNGn1JejPe6lYJfYGMA1lrNJnNqRsMZlmlIgeDGQkGo72QWuoLCA1SX4WSI5DeFuiFI_C3lWCkQQkrvDQaGJb320EJ50AAyxuQ2kPP8hPDimELr7NUBH98-btl2P3WtjAYa2nw6gaW_qHBg_QpvMzSwVUaJTw58DNBy_DE8ATOCz0KO4K7aS_ewG6KXMp4w3jTGQv3x5NRyryGue88PDmfDuvK8iY-ZJ_4_uONp2UNbYDlbSCkxULwwvIzMN5cjRzh6_bGsGRYATueGG8AAD6kCQw7hh183tWKY4aex-fYPLxchNS_YIY-eSu1Z_k5XgbZ4p0lv1kNPJ7sWN-xaKNx8Cr9DA9rI98hfO3qPTk_svx5iJ9Z9i4Nb85vKw2eRviL3KZ8LI640d1JSOViB_GQPyyPDb4LB1J_5yvDanelGfwm1I-oj937tm_BtbtXAd5sPgI_jD3rq7RGL6R_GItsUP4BlvI0KNEpcXHh_GeuEepRCee3VRlLFpTU_4b3s_drKIwGXszYG-VTYy8Mu_8Ydn_mThTn3-cRkrHOxyqvREJ1diz4MS-OZZHM9ZSXVIi-nPiER8LyMOFEZT5xmqrDkbJE1sjxwBFLXuEnLNLDmB1xqrCkjIsi61nBaRFSpUpdl9A8kc5tVGdYYZYnSvSk3D3eiLuxGJJu61DwFFLOCq6k8-4dwkuv6D3wn_V75pphoNW7b-t6Dnt9CuF-CeH-srv80bYnm1X1T8JJP299OpiFYRdG2P-eVmtCvhl2d0qOYbezutb4fwAAAP__QI97DA">