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