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

    <tr>
        <th>Summary</th>
        <td>
            performance-unnecessary-value-param sometimes gets confused inside templates
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          higher-performance
      </td>
    </tr>
</table>

<pre>
    ```
#include <vector>

template<class T = int>
void f(std::vector<int> v) {
  struct S {
 std::vector<T> v2;
  };
  auto a = S{
      .v2 = std::move(v),
 };
}

int main() {
 f(std::vector<int>());
}
```
[incorrectly triggers](https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:12,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:16,positionColumn:1,positionLineNumber:16,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:'%23include+%3Cvector%3E%0A%0Atemplate%3Cclass+T+%3D+int%3E%0Avoid+f(std::vector%3Cint%3E+v)+%7B%0A++struct+S+%7B%0A++++std::vector%3CT%3E+v2%3B%0A++%7D%3B%0A++auto+a+%3D+S%7B%0A++++++.v2+%3D+std::move(v),%0A++%7D%3B%0A%7D%0A%0Aint+main()+%7B%0A++++f(std::vector%3Cint%3E())%3B%0A%7D%0A'),l:'5',n:'1',o:'C%2B%2B+source+%231',t:'0')),k:52.39869199990427,l:'4',m:100,n:'0',o:'',s:0,t:'0'),(g:!((g:!((h:compiler,i:(compiler:clang_trunk,filters:(b:'0',binary:'1',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'0',intel:'0',libraryCode:'0',trim:'0',verboseDemangling:'0'),flagsViewOpen:'1',fontScale:12,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'',overrides:!(),selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1),l:'5',n:'0',o:'+x86-64+clang+(trunk)+(Editor+%231)',t:'0')),k:48.77750596859633,l:'4',m:34.70312617491597,n:'0',o:'',s:0,t:'0'),(g:!((h:output,i:(compilerName:'x86-64+clang+(trunk)',editorid:1,fontScale:12,fontUsePx:'0',j:1,wrap:'1'),l:'5',n:'0',o:'Output+of+x86-64+clang+(trunk)+(Compiler+%231)',t:'0')),header:(),l:'4',m:21.968034000634876,n:'0',o:'',s:0,t:'0'),(g:!((h:tool,i:(args:'-checks%3Dperformance-unnecessary-value-param',argsPanelShown:'0',compilerName:'x86-64+clang+(trunk)',editorid:1,fontScale:12,fontUsePx:'0',j:1,monacoEditorHasBeenAutoOpened:'1',monacoEditorOpen:'1',monacoStdin:'1',stdin:'',stdinPanelShown:'1',toolId:clangtidytrunk,wrap:'1'),l:'5',n:'0',o:'clang-tidy+(trunk)+x86-64+clang+(trunk)+(Editor+%231,+Compiler+%231)',t:'0')),l:'4',m:43.32883982444915,n:'0',o:'',s:0,t:'0')),k:47.601308000095734,l:'3',n:'0',o:'',t:'0')),l:'2',m:100,n:'0',o:'',t:'0')),version:4):
```
<source>:4:25: warning: the parameter 'v' is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param]
    4 | void f(std::vector<int> v) {
      |                         ^
      |        const &
1 warning generated.
```
despite the fact that it would not do so if `vector<int>` had been spelled `vector<T>`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WF9v6rgS_zTmxQI5dv4-8EDCqe6Vrvas1N77emXiAbzHsZHt0NNvv7ITaFJotz1aLUKFjH_zxzPzG-Ny5-RBA6xRVqNsu-C9Pxq7PsrDEezyBHZvbMd1C4udES9rlJPxTbaIbBBlUreqF4ARa87QemMR-zYuxr8eupPiHhBrWsWdw08YsS2W2l-BZyMF3iNaOi8Q2yC2uVhqBhg-I1phVNQDHmPnbd96_DiR3eo-RU2K2FUNFdvJE--9wTxG8zixHV6rM43yq9HOnAHRMsSBaDNCp-bC98mupfa441IjWs5D_2ibAzi8b62-yXtWS90aa6H16gV7Kw8HsA5lW0TLo_cnFxzQB0QfDkbsjPIrYw9RwA5xKYnOyvcfjohtWiPgm5AhRtrIuFrupQLNO4hPRYJogWizN9o_tlwFaUJHwX8d_P5zgJEB9kdYRrRRXAdfLaIZrcc_jQMFrZdGD35Ai8aovtOjDmjxH6nht77bgQ2yHNHmZJwMKjPkRXgLv7p49Nz6mdJ8aa4alm8V7uFCczjT23ZMT9jbhSEobvXKEpqFgmeBQ9mEJQEReYJo_TSqbBGtQ4dcVQJhEK3v9VLQf8XWQ8MGK0U9eqsRrQf-IFo_3lm8QG4NP13N0vBtrpQV27fCwLDwMdnH431vw3sV7F6h75HvA6fD45jTmIb6lYXvbvWv83jh5V1XxRCXGkqeDa2uZ_www1Mzbfh6bJRBwEaknxJm8Nn8QGyT0RWryrxKqqqqSBqxo8d00OxCCxLy6pvMfA8PYS6QO26aT8yC7iQVTCbBVcI2bWD0_73t9Y9Afql8mEYRtZsFs5Oa25dZbgbR990f0PrZQmu6DrT_rtXLzIaAXX9ouFJuBhfQcX1QMMfKMCLlGdxMDD-h7f0cKrUHNZMoubPcvjRGzJHeym4mOIPdGQfbIQKpD2-zu1f84P4n4fn7CfTfPjmV3LlJuYJDcwqzzE1Lb85grRTwFvrVufu1sfuPT93kAza-ZUT9s8yXeYpoHRs4UrEcu3gYF-Xl-LuStPqYp2m5KooiI1mVl1mVM3aXpyxdFYQlNE-KtEqy6oMYv8TaQFTT-1Pvb2n62_XQ_njXkR9x11KMWf9ikz5bfpo2-Sfr8X0MvDb7T5WmuU6kzxTnCFzEhrk2_m1ZaLKq8pKwlBCSs7Qs8r-xLt4Y9VoVbg8jO5ftEdofLp56k9_by15raME5bl-WZ656WJ645d3gOaj_zjWox6N5nkf4z9e7M5q3ZmDKv7irAfSm9ybMOhCzaTdF3ozCYfHRCzmXu1fJRPB295fz0xj1b3E5krwUL5dT6Re7MtpZBkM3PfgL06NBtP5a3952acpWjJYlq0qapmF8_FqTXidWscpJwkhJCCFVVrD01Sv7cHz-Rcj0C79L7pk5g3XDsZTGO9Hm_lWIXWf_twhlG5ohtsHP3OrhKMb-CDiSBzxYjGhxRrTA0uHWnCQIvDcWA2-PWOqzaXk4kPCu99ho9YJ7BwJzhzlujXYeW9iDBR0c1lEkBVjc8R9SH7D0tziMsvozxM62r1fQFKOiwV-_GIdX0HzvhbJv70CHoBHNh_Xkkj98AA2WexCru_kX4E7SQ8zxnrce-yP3IQ_PplcCa-OxMNgZLPcY5eTtlTcn-MgF3gFo7E6gFIgZ7GkArRZizUTFKr6AdVLQhKYFy5PFcU3aLCV7mpC2TWkBVcsggYzmCeyTinC2kGtKaEqKpKAkyUmySiueEsjEvhDVrmQMpQQ6LtVKqXMX7skL6VwP66piZbpQfAfKxX-PUKrhGcdFRCnKtgu7DjrLXX9wKCVKOu9erXjpFaw_UXnsTAdeduDwAXzoSr2PXSdjc-HL5dAteqvWb6730h_73ao1HaIPwfX4sTxZE39R04cYsEP0YdjQeU3_DAAA___IuuzJ">