<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62276>62276</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy false positive for performance-unnecessary-value-param
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kees-jan
</td>
</tr>
</table>
<pre>
Consider the following minimal example:
``` c++
#include <string>
struct Context
{
static void set(std::string name, int value);
};
template <typename T>
void set(std::string name, T value)
{
Context::set(std::move(name), value);
}
void f()
{
set("test", 5);
}
```
clang-tidy 17 complains:
```
[<source>:9:22: warning: the parameter 'name' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]](javascript:;)
void set(std::string name, T value)
^
1 warning generated.
```
I believe this to be a false positive. The disassembly shows that the move constructor is being used (as it should be), not the copy constructor - no copy is made.
[See this example in compiler explorer](https://godbolt.org/z/r1vPP6PqY)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVMFy6jgQ_Br5MgVljzHggw8Qlqq9pWpz2aMsDVh5suSVxiTs12_Jhpdkw-HVo1QGS8x0q7slGaM5O6JGVHtRHTI5cudD84MoLl6ly1qvr82Td9FoCsAdwclb69-MO0NvnOmlBXqX_WBJlDuRH0S-E-t8HqAE7tOYp7E0TtlRE4jyKXIw7izKP26L0zNyGBXDk3dM73xb2dzqAQAiSzYKLt5oiMQCt5F1Ai53c0NwsieBT2Acw0XakQTWorxT2Bw-fk9Ppn6wkidKfB0olcPLT1q_APTyAfOd730nc-HXPr2_kMDt3KdOrR7y_UR2YnMSuH0MNvcXiEyRBWJqWT1ud3doflVWuvOCjb5CsQHlkyTGxe-G3l6rfTLQj0FRUqrc1aLcIYpyB28yuMnX3RSWQQbZE1MAgZt5pxswEZQfDGk4-QAkVQfGXbySbLyDdmTwzl5hjKRBRpCgvIsMgU4UyCXM_TQ1RbKXP5Ibhr__D0S1HyicfOilU7QYnSNFMcpwXUxSLyZ6ojqkgdtXeZFRBTPMfu1_qvwbKYBHH1HdYlXcdYIzOQqSSS8fSv0ntGQNXQi4MxHYQ0sg4SRtJBh8NGwutISXjkCbKGOkvrVXiJ1_i8Cd5MmFlLRZnHS8fEgOtJTgJ40FbmVMCsbOj1ZDe8-j83O98sP1S_0CnJ9nTYRealp-jqmo9n_RjfHtbgDjplwZSwHofbA-UJhV75iHKWp4FHg8e916y0sfzgKP_wo8huLy_Lx-_udvgXWmm1LXZS0zaor1FvN1vcYy65q21KuC1oVWq00udYFaIbYSi1N9KvWmzUyDOZb5Cou8LstVuaRiI2vMt6o-EclqJVY59dLYpbWXPsFnJsaRmjXiZp1Z2ZKN0yWJ6OgNpsV0xqpDFppUs2jHcxSr3JrI8aMLG7bUfDphX72bjsAvhDQbg23-J5XhbmyXyvcCjwnv9rUYgn8lxQKPE8so8Djt4r8AAAD__7g305E">