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

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] false-positive in `bugprone-return-const-ref-from-parameter` when overload for rvalues exists
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy,
            false-positive
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          5chmidti
      </td>
    </tr>
</table>

<pre>
    ```c++
#include <utility>

const int &foo(const int &val) { return val; }
int &&foo(int &&val) { return std::move(val); }
```

While it is true that a `const&` parameter is returned in the first overload, the second overload handles the case that would be the problem that this check is trying to prevent/detect.

https://godbolt.org/z/4aEh9oM18
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxkUk2TqzgM_DXi4iIF4iPhwGEyGW573rOxBXjXYMoWmc3--leGVGbmvSoXlFtyq6WWDMGMC1EL1RWqWyI3npxvKzXNRrNJeqcfLdTZcRTgNZ7sBtkbYGEWZTdNAor3jY01_IDi4xndv8otgYVZWADWg3OAlx_QXVrARsD5Kjzx5hcRkeIq4Hw7GJ6Jr-df9z_fBtZQvEHxNrs7AV6OjB90r1a-q_x7MpaEYWGCYL-R4EmykCJ2HNXGenUmVunlTEw-5h0lSQuzCJ5IDMYHFu5O3jqpAd93NJByi37BYpKLthT2mJLhWenTbVaLnnZ49a63NB8RnkwQaiL176HtYZZRsBOrpzstDNhpYlJ8-t7OxLyGOAjsALvR6d5ZPjk_Anb_A3al_Jga91d-SXRb6KZoZEJtfs7LvK6rrEymNq-yplDnJldNqQc9oMzp0jSy0dVw7i8qMS1mWGYl1phjXpanvJD5UEmVl9g3Fy2hzGiWxp6svc-xdmJC2KhtMjyXiZU92bDvHKKychlTNvoBiIDvgDhIGyhdXTBsopMYV9O3kSvttzFAmVkTOHyxs2G7L_E3tuomfhJFr6DO-m1cvVsoPTxMd49TT0M6eDenL5uj558TLV_2Dc4Lf5d2oyDov6gg2bxtfxu44WnrT8rNgF0U-Pylq3f_kIqm7bMIgN0-jl8BAAD__4j7HRc">