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

    <tr>
        <th>Summary</th>
        <td>
            bugprone-forwarding-reference-overload shouldn't match some constructors with constraints
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            enhancement,
            clang-tidy
      </td>
    </tr>

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

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

<pre>
    This can be more nuanced than the `std::enable_if` suppression that happens, as concepts are substantially more transparent.

```cpp
template<class T, class U>
concept different_to = not std::same_as<T, U>;

struct S {
  // suppressed: std::input_iterator<S> is always false
 template<std::input_iterator I>
  S(I&& i) {}

  // warns: std::copyable<S> is true
  template<std::copyable T>
  S(T&& t) {}

  // suppressed: we have an explicit opt-out in the form of `not std::same_as<T>`
  template<different_to<S> T>
  requires std::copyable<T>
  S(T&& t) {}
};
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMk0GPozgQhX-NuZQSEZtA58ChJ-lIc-7ec6uAInhkbK-r6Gz-_YqQTmd2Z7QrRQFK9qvv2a-Q2Z48Ua2239T2kOEkQ0h1-6NrsiZ0l_ptsAwtemgIxpAI_IS-pQ5kQA8yEKgyZ-mUeVbmmTw2jt5tr8oceIoxEbMN80IUGDBG8qz0HpChDb6lKAyYCHhqWNCLRecuSyNJ6DliIi9rlR9U_nz7L_Pl18a4VITG6FBImX3rkBne5hbL6x_KvCyrbv2gs31Ps-q7BFDmAD4I3B0wjvSOrMz-KnLdbr499mdJUyvwCqq61QGUPip9vDumWexL0_o4ybsVSighKbN_VeYFLAO6M14YenRMN6kHL7_ZD9_vlgBelX76rnSpdAlW6d0Vqjo88t7pzpg8_wTWhniZL-wBSdL0ifJLls8t8PYPircbhfwHxc9ndCYY8IMAPdBf0dnWCoQoqzAJ2CVffUgjhH7O2W9vyrzMkfg39uNdf5p8BE_052QT8S-P5P87rA5fGflM5_KZdbXpdmaHGdWbsip0VW1Lkw110XVlTo1pNibvd-Wu0oXZPOFOb_qethud2Vrn2uQbvcm3eZmbtX4qtl3fFbuiM6bQWhU5jWjd2rmPcR3SKbPME9Vlvql2mcOGHF_HWmvywzy0I3lRWiu9V1q3Dv1pJba7zKXtIUv1LLRqphOrIneWhb-kxYqjuplOMQVPqz6kM6bO-tMq0fWEW1qFD0ouYAc8hMl1XulKYERpB-Aw0jzwy-yExHC2MtwqaL1wNiVXDyJxTugSlZOVYWrWbRiVPs4kt8cqpvCDWlH6eHXMSh-vpv8OAAD__xc5d0M">