<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56505>56505</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
the "operator delete" selection does not follow c++ spec
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
chumarshal1
</td>
</tr>
</table>
<pre>
```
#include <cstddef>
#include <iostream>
class My_Class
{
public:
int a;
int b;
~My_Class(){};
};
void operator delete[]( void* ptr ) noexcept {
std::cout << "====delete with 1 parameters======" << std::endl;
::operator delete(ptr);
}
void operator delete[]( void* ptr, std::size_t size ) noexcept {
std::cout << "====delete with 2 parameters======" << std::endl;
::operator delete(ptr);
}
int main()
{
My_Class* pobj = new My_Class[2];
delete[] pobj;
}
```
```
The clang result is:
====delete with 1 parameters======
But gcc result is :
====delete with 2 parameters======
```
I think clang does not follow c++ spec as follow:
https://cplusplus.github.io/CWG/issues/1788.html
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFVEuP2yAQ_jX4MmpkYxM7Bx_y2K166K1SjysMJGZLjAV40-2v7-B489intKpUe4zxDHx8M3y4sfKxJvN0snRD0iWhue6EGaQCkq-FD1KqLclvXotq64NTfI9hmOJjKwz3Hr4_3q3HzhQqV8dOPzRGC5JPgwEv3QXgJF9de5orDylvnhAJrQhdRMBycxpz1R_bB6sl2F45HqwDqYwKirAVYRsEgBgldAl9cPDyQnzorPotVB_gRD1GsCKRe74UdgixCmg4nJJ8c7LjWnDQoYUMeu74Hr-dvxwzGaVPGCdg1Ulznfrofp4JrZB6rMNlBT6TPqEXi3v9R90FiK9_WAT6v4oQdbTnupskc61ERD1LCkthm3tcZgOdOpwDbEVjyS6oXJZynPTW4s-P1mvOH60CPC_dDpzygwmg_elofFJS49wV7stOCDjDwoe4H-zS2zl9g9Dq7teUiLTKo24CbK0x9gCC0BUa-F4J4H5yI5vpz9CG0I9J01s00ZvBx2e2Q05DM9MWveufX7HV3g8K9-o2K6tq1oa9OSIkss7lIl_wJOhgVB3aKF76QiwUPPZE0LZ7l2UyOFNf05rICLvHD2Menl5femfvEfKSHZuzlCVtLdm2YCnPs3lT0JQ2GV9wXsg5K8pmWzGZGN4o4-soJUqj6kaIeI7YJtE1zqFpmeUp3gWbqW2RpWm1KBf5vJGsIkWqUNtmFnnMrNslrh4pNcPOY9BoH_w5iGLWu06p-qjchA-hta4W7bDnzrfcZMm4fD3S_wvRZLlc">