<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/57358>57358</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang shouldn't error on `override` if the base class instantiation failed due to a `static_assert()`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:diagnostics
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
philnik777
</td>
</tr>
</table>
<pre>
Reproducer: [(Godbolt)](https://godbolt.org/z/Y68cG9aTj)
```c++
#include <type_traits>
template <class T>
struct B {
static_assert(std::is_integral_v<T>, "only integral types are allowed");
virtual ~B();
};
template <class T>
struct D : B<T> {
~D() override; // clang errors here with "only virtual member functions can be marked 'override'"
};
int main() {
D<int*>();
}
```
The diagnostic is wrong, since the override is correct and the actual problem is that a `static_assert` failed.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNU8lu2zAQ_RrqMqghUdbigw5e0tyLXHoyKHIsMaFJg6QcpF_foeQ46QYUoBZqnmbeezPsnXrrvuHFOzVJ9KzcAqt2jLePTvXORMY3rDrQfozxEijM-FdawxJdOT_Q7gdd3-tWPm7E03P6Iz-wfMvqfFmS8V1ay1deaivNpBBYuY9vFzxGL3Sk3A83xHyPeL4YEWeUNCIEeLojQvSTjLAD1tyyAoQoopZHAqIn1m2IKrEttzoctY04eGGOV0o2p-F7YJw7a97gPQiJSwDhEYQx7hUVIZKY8l7jqn2cCMmah2TR5yBrDh_v_yvgAMnv3Y3UZzVU4bBUAHdF77VCSg-L-UDp7AD02fkAIxLjVx3Hu6J3mmc89-jhNFkZtbMBpLDQI5yFf0FF8OaemzdJ7D-UkEP0j7Y3Qp9oEnJPUca3s6l_OPLrHCzbpxFBaTFYF6hhoAO8emeH1JJAk4EQCfBOLIWl8x7JLWHVHBNyVkcj2xs8J0QcBYWBSvw6BXUOJ6ENqlWGXVHXxbqsi6LKVFeqTbkRWdTRYLef7Qyjm4wikU1crAVnU8q7R5RNn2YGvQgIS0-1pZI2apEcvlUDNZEK9zdGi0V1nk3edL8dKWrh1K-kO9PGmOv74wsJfSb9tNUhTBjopWrKqs3Gjlct1qpdS7kueF3UzbpvTuWpzTebzYnXfWZEjyZ085Hm89hQvQ_3Q-p6dch0x3PO85ZXxTovqmrF87zhteCNLNp-XdVsnSONgFklRunUZ76byfXTEChodIjhI0hq9WAR58KUX0xxdL67jNpY_dI0TTZL6WYdPwH0613g">