<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58230>58230</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] `bugprone-forwarding-reference-overload` doesn't know about concepts
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
h-2
</td>
</tr>
</table>
<pre>
```cpp
struct small_vector
{
constexpr small_vector() noexcept = default;
constexpr small_vector(small_vector const &) noexcept = default;
constexpr small_vector(small_vector &&) noexcept = default;
constexpr small_vector & operator=(small_vector const &) noexcept = default;
constexpr small_vector & operator=(small_vector &&) noexcept = default;
~small_vector() noexcept = default;
template <meta::different_from<small_vector> other_range_t>
requires(std::ranges::input_range<other_range_t>)
explicit constexpr small_vector(other_range_t && range)
{}
// ...
};
```
results in
```
small_vector.hpp:186:24: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
explicit constexpr small_vector(other_range_t && range) noexcept(is_noexcept) :
^
/home/hannes/devel/biocpp-core/test/clang_tidy/../../include/bio/ranges/container/small_vector.hpp:73:15: note: copy constructor declared here
constexpr small_vector(small_vector const &) noexcept = default; //!< Defaulted.
^
/home/hannes/devel/biocpp-core/test/clang_tidy/../../include/bio/ranges/container/small_vector.hpp:74:15: note: move constructor declared here
constexpr small_vector(small_vector &&) noexcept = default; //!< Defaulted.
```
although the constraints prevent the constructor from ever being instantiated with either `small_vector const &` or `small_vector`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVW1zmzAM_jXwxRcO7ECSD3xIluZv5AwWwZtjM9uk7b-fDGlD1qZr1-5uHOcXJD-SHkmmMuKxjIp0fOuui9JtlK6dt33tiTtypfYnqL2xoyBabMYFwac22nl46Oy1Il1GdEW0gYcaOk_-9ERsSwQ0vFc-YhvyDvjpdtQiES1uGr028FH8Afk2-F9YCJDEdGB5MMe274voa23ciuqWlWhx95kcv8nUxYqHY6e4B1T7dgTPI7bGV8imAQva7xtrjii68oTdEeNbsHvL9QH2CHt3AQyPhZ-9tOACBV6MkIOuG9dSd70fTyP2Cyy6usAhzUrW0t8unavjZ5bJiI18TfncRIvtZH9Z0R2-JEmSKTtB-Zmvp3adKmCAyKkjUpNXtaZ-Ji32OVtnywJHOseB3HOrpT6E5RBbaH8sE16H9KKAcNIYi1oibCwMCamB1FyTVgogGDee7B4J14IczQmmOI5E-abqD501GmYXoNkz0AxPWGW4iPLt1_H9VJ-oKN3-ssNMsPV1lfxep_m5ijAXrTlCmLjWoYp2Ak6gcK6kwQtzVhsbxB4cIu9qhcb3XopH3GAOz4PUteoFjKdwPBcg6hvtudSAwexeydGChUTlIS_aeBjzgyxPkyQAjVoQBKmAf319nuszohk2C9mO30Ekr7H535A4f0Hi7xX6ORI__o94m8ZXO5wr35r-0J5bLbiOMWPLdxa51H7yfQwp3JYERZZUELpWoohrL_GCFeRe-paADO1D0NCNmihSYl7IcZvEUGZFkWd5sUpZLEomVmzFYy-9ghKbfcjgbMhgvg0A7-x-NCgMOB3RhSc_tLknvDL9cAEEWl3cW1W23nfD5T1weMAg-iqp8ddAd0qdnqYZ2vuODofCca4fCiVfUpbGbQmsKjKaQ0oFZcAz4E0uqnS5WlRptaznseIVKBciQf9jWdKU0ixNF1nO8pQldbHiLGuqpprXTb5YRvMUjlyqJBhOjD3Ethx8wLAdCpV03l2E3Dl50ABP-LzH1NqyndF4cLUc_PwF_a769A">