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

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] modernize-use-equals-default should not be applied when it changes semantics
        </td>
    </tr>

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

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

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

<pre>
    https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-equals-default.html

e.g. consider:

```cpp
struct Trivial { };
struct NonTrivial { ~NonTrivial() { } };

struct Container 
{
  private:
    union U
    {
      Trivial a;
      NonTrivial b;
      
      U(): a{} { }
      ~U() { }
    };

    U u; 
    int index = 0;

  public:
    ~Container() 
    {
        if(index == 1)
          u.b.~NonTrivial();
    }
};

Container cont;
```

here, modernize-use-equals-default turns this code into `~U() = default;` which then does not compile due to the non-trivial dtor.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx9VMuWojAQ_ZqwyZETQUQWLNq2Zzmr8QMSUkp6YsLk0Y_5-ilAEdqZyQEN9bj3VlFEWPlZtyF0nuRPJPuGV6O5Oadav11S685ogI_g-M2xCkp-9g8tND89bi5WgjPqN-A-eljBr8i1X0k48ahD2oaLJuxA2NP4C-k5pY01XmFazznzkS0br6brRosPLjaB_nDqTXFNSbnH-0Dy_cL93ZplxMvdQrIdyapb5iJ7gfFsTeDKgKNXZ3mNorRDJB5gEktxRaOsoce7YRbfr5sePrGN9plU8cU13x9H2UiJCIg8KB9rn2eUL8dlfXM9XwsdcGlE64xKmYC3hA9K8gNlDyldFFo1i9KRdWrWjf1fbUCCE8ZMDD3Jui9sEYPtTEX6l9e26NBU3mNp95eHkxXuzts8zWNbcDiqz3Sa29Xj1NIQnfE0tMojooS-TZb2QLOOYynX8J5wy-h7q5oWk8BQacFTYwNmXzqlgcoIFCHQiWazCtcZkMG6dNSVQL3ebhkrcrbeJrLOZZVXPAkqaKhJsZ99fcXh_-p9a6OWA78AyrtOK5AoD4UplNQiEMrzcOEmqMYn0ekvZ8BZhTaKFNXjQ38UXP9WnbOv0AR8VN5H6A-AomRZmbS1LDdZscuLvDyV6ybnsmLZVoiKrUWzYWKTaC5A-74WkmUG3ukAgXssKFF1xrKM7Vi1zgvsQFr2qyrErhRcZqeMbBgKVno6mRJXD5JEPHt0auWDvzu59-psYGhdj89jaK2rXxvQ4BS4ZCCvB_F_AHHecNs">