<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62392>62392</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang-tidy complains on implicitly deleted special member functions 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          alexolog
      </td>
    </tr>
</table>

<pre>
    A common way of disabling copy/move operations is to inherit from a base class that deletes them.

For example:
```
#include <boost/core/noncopyable.hpp>
#include <iostream>

struct Test : private boost::noncopyable {
    ~Test() { std::cout << "dtor\n"; }
};
```

Even though both copy and move operations are implicitly deleted in `Test`, clang-tidy still issues a warning on the destructor:
```
[<source>:4:8: warning: class 'Test' defines a non-default destructor but does not define a copy constructor or a copy assignment operator [cppcoreguidelines-special-member-functions,hicpp-special-member-functions]]
struct Test : private boost::noncopyable {
       ^
```
That's the whole idea of `boost::noncopyable` and similar mixins.

See https://godbolt.org/z/Gohb4Gnjf
or https://godbolt.org/z/17cvYMn1b with a different configuration that complains about move operators as well.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVD2P4zYQ_TXjZmBDIm3ZLlT443xVqlyTkiJHEg8URyCp9W6K_PaAknK7OewhRQCBtkS--XjzHlWMtvNENRyucLhv1JR6DrVy9MqOu03D5q2-oOZhYI9P9YbcorFRNc76DjWPbyAeA78Q8khBJcs-oo2YGK3vKdiEbeABFTYqEmqnYsTUq4SGHCXKLzTsoLhDcVnWBwekVzWMjkCu36Aq1md5FdJ67SZDCPLWMMcE4qE5EIiHZ5_rUo2jXT-OIL98BrIcUyA1vG_Pa0xh0gm_UUwI8oJjsC8qES455AXk5UN8hON1wSEi_pVRIE4gznkDYzILQvOUo91A3hCEMIkDHG4ehAB5RTje1wqOd5DXzxue1y8v5DH1PHU9Npz6mX9U3uDPE1CB0A6js9om97ZybdB6hKqYy6wKELc8D99tkzVvGJN1Dm2ME0VU-FTB5xFzzkhoaGGGwy9ncriCvEWegqZMqrzsQV5OmcQ1Vv67CADEceHqiIZa6-eMnv3WUKsmlz6kw2ZKaJgiek7raVRL55r9j2Mc_vm6aHogn1ZGOCAcrnocs0C6yRpyOeU2jqStctuBhobCtp28ntkDceutHsdfHzjc8_O_BYOIcPjyKZvfepXpme2Bz54doTWksv2gKj4PDlUxiyHawToVcLCv1sd_eet3IuxTGmMGiweIR8emYZd2HDoQjz9BPL5y3-y_-u_tAuHwn4jyqF_--M2XDT5t6lGhsW1LIU9As29tNy26XIyveRidslmlTTbGB-1yiKgiPsm5teyNqaU5y7PaUF1WJ3HY76vyuOlroYqyOihTilOl2vKszPkkdXs-kzmVum03thaFkMVeVKKURVntjsocjaR9U51N25Yt7AsalHU7516G3M1mFn9dCXkWG6cacnG-F4Xw9FyckS17uG9CnTHbZuoi7AtnY4rvUZJNjuoPznpvmP1nrlxlhovM8IfMcDMFV_9Evk391Ow0DyAeOeX6sx0Dfyedr8HFwiAecyN_BwAA___U9eao">