<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/83845>83845</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy doesn't report missing forward when one parameter is forwarded, but some other parameter isn't
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
geza-herman
</td>
</tr>
</table>
<pre>
In this example, `foo()` doesn't forward `y`, but clang-tidy doesn't report it.
If none of the parameters are forwarded (comment the `use(std::forward<X>(x));` line), then `cppcoreguidelines-missing-std-forward` correctly reports both parameters as non-forwarded. But if one of them is forwarded, then the other one is not reported.
```c++
#include <utility>
template <typename X>
void use(const X &x) {}
template <typename X, typename Y>
void foo(X &&x, Y &&y) {
use(std::forward<X>(x));
use(y);
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU9FuqzoQ_JrlZUXk2EDIAw9NeiP1D9pHgxfwlcHINm25X39lEpJURzo6R0KJ7MxOZoZZ6b3uRqIK8hPkr4mcQ29d1dF_Mu3JDXJMaquW6m3E0GuP9C2HyRDwM0LBWmuBl8CPUDBUlvwI_BCwte5LOhURCxQsgus5YGPk2KVBq-UJ62iyLqAOO2CvwF6un28tjnYktC2GnnCSTg4UyHmUjjZ-Ugi8bOww0BhWHBRs9gS89EGBeAHxcoOCOL-D-Ad4-R3V8iOIU9Rs9EjrxTnOj5GgmabGOupmrSj-7NNBe6_HLvVBpRtfwbCxzlETzHLz4LG2of-h1UcX6V3uDk9zQN3iw9qA2j_83HVEMzb05FaojjxbVKR-JBXzXZ8G-Ck-11su9NiYWRGCOM9BGx2WGMDTZKBhMjKsiLBMNMqB8P0O-rRa4TXNxo4-4DsCL2J8CIcTHF7_gCva2U4fP5mv1Vk5r7Rn_Lgdlu0_VjQi4l-81OvMdWB5vnso3hJLVCXUURxlQtX-wI55fjywMukrTnlRclFnUqlatHlWs4I3opWqOQhBKtEVZzxjgmV7ke2zcrfPD2WpCsH3-6au2wwyRoPUZmfM57Czrku09zNVpSizPDGyJuPXleP8sRXAeVxBV8WhtJ47Dxkz2gf_oAk6GKp-t0m3tt6X8Cv2KbboXsxfKheX09thq9wzcKVOZmeqPoTJx_z5Bfil06Gf611jB-CXqO72lU7O_ktNAH5ZHXvgl9X0_wEAAP__I_dfXw">