<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/102467>102467</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Explicit calling to base class destructor with unqualified name rejected by clang
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Rush10233
</td>
</tr>
</table>
<pre>
Consider:
```c++
struct A
{
~A () {}
};
struct B : public A
{
~B () {}
};
int main ()
{
B *b=new B;
b->~A();
//b->A::~A();
return 0;
}
```
The code will work only if the destructor`~A()` in the derived class pointer `B *b` is called with qualified name `A::~A()` . I'm not sure whether this is necessary. [class.dtor_#17](https://timsong-cpp.github.io/cppwp/n4868/class.dtor#17) says that "In an explicit destructor call, the destructor is specified by a ~ followed by a type-name or decltype-specifier that denotes the destructor's class type. The invocation of a destructor is subject to the usual rules for member functions ([class.mfct]);", but usual member function does not have to be called with a qualified name in derived class instance.
GCC is now accepting this code, but MSVC does not accept it either.
[https://godbolt.org/z/sW6YEhc8j](https://godbolt.org/z/sW6YEhc8j)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMlE2v8jYThn-N2YyIEgfysciCwOHVs3g3bdWqq8p2BuKnjp3aDpQuzm-vnA8OJz2qKkWBxDP3zNxzAXNOXjViRfY12Z82bPCtsdUPg2uTmKbphpvmUR2NdrJBS9IDiU8kXu5ZPF2C0Dpc41vn7SA8LDF5DdM3gPcDEFoQWgLJa5KflogTSetX3VmhBpIeoB-4kuIrOXiv_5vedJfaQ8eknnO-0AtyB07Sk8Y71E8RAOBbkr69H-bM5wGhZ0LP4-EheJMe_hkDFv1gNcQfTT07Xfx7bfOnFkGYBuEulYK7sb-D0eoB8gK-RWhwcsdYksXPalkMUs_nVt6wAaGYc9AbqT1aIFk8DxciHQimFDZwl76FPwam5EViA5p1GELXs2QxRPCN0LwDbTy4wSLcW_QtWvCtdEFRo0DnmH1EQPb1WD1qvLG_EZomOdmfCC1a73sXtEfbvOyc0det6PvoKn078EgaQs-i7-89oWe9K7IiPD-1JilagmMPB75lHgil3zQwDfhnr6SQ_sWgcUpCjyvfQreuRzHNzB_A4B0uRilzX579o8ft6Iax0KBQ44slyU6lG9TGo1tvheZuNj8kRRD2KfXNCOal0WAuwNbNDPw7Cg_ejFqDG5gCOyh0cDEWOuw4WrgMWgQFN_K7WNxdhB_NHYmjNIzLBz-LrFKhMejGFbbshqEex08osDUMUq-Aktp5pgVGr8j-73gcETB3YEJg76W-TmAEkJeW_v_jz8ePDqZAkB5QBpA-CZJ9_ZmVq2m4UT4y9kro-S9Cz-6X7Ne3VhTfv0Lr38JpuWmqtCnTkm2wSnKaJnSXlvmmrTjN8-zCKN8XSVkWRZFxloikiHmW7zK8bGRFY7qLi7hI0rTc5xHFuEiLsmSc5RkmjOxi7JhUkVK3LpTfSOcGrJKY7rJ8oxhH5Zb_WluFqC0fro7sYiWddx95XnqF1dtCddjS6KoBzhzO23jhaNzfoFf7sxjImrAWiunrZrCqWpk1_faE6Qg9h_rzx7a3JmQTeh6HcISe5zluFf07AAD__5kn6kA">