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

    <tr>
        <th>Summary</th>
        <td>
            "copy constructor must pass its first argument by reference" error in friend declaration in class template
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          igkper
      </td>
    </tr>
</table>

<pre>
    Hi,

I think in the code below (and at https://godbolt.org/z/vf6GjYsca), clang is wrong to believe the constructor in the friend declaration in the nested class `Template<T>::A` is a copy constructor and suggest its parameter be passed by reference.
```cpp
#include <iostream>

class NonTemplate
{
public:

    class A;

    NonTemplate(A a);

    class A
    {
        friend NonTemplate::NonTemplate(A);
        int secret{42};
 };
};

NonTemplate::NonTemplate(NonTemplate::A a) 
{
 std::cout << a.secret << std::endl;
}

template <typename T>
class Template
{
public:

    class A;

 Template(A a);

    class A
    {
        friend Template::Template(A);
        int secret{42};
 };
};

template <typename T>
Template<T>::Template(Template::A a) 
{
    std::cout << a.secret << std::endl;
}

int main()
{
    NonTemplate nt{NonTemplate::A{}};
    Template<int> t{Template<int>::A{}};
}
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VUGTqzYM_jXionkZxwaSHDhksy9tLz3tpUcDCvF7YDO22J3tr-8YSJYkr7M9bDMZwJal79MnW9YhmMYSFZA9Qfac6IHPzhem-dmTT0pXvxe_G5AHEM8g9tPzD-SzsT_RWOQzYeVqwpJa94Ygt9rWqBnPzH0AtQd5BHlsXF26llfONyCPf4M8vp7y3378FSoNcgfygFWrbYMm4Jt3tkF2MaKhV5ohbGA_VOz8BfXkDdkaa6pa7TUbZy8WS4GpjhFDQMjFC3V9q5lAHV5AfY-k1H4PuYhwGivXv98AxAzC0DQUGA0H7LXXHTF5LAl7HQLVWL6jpxN5shWtZm1yMf2rvp9npDK2aoeaENTBuMCedBcpLMScaP7p7JXmZNw8TR_9ULamiqQXTog457cH9XRvWQaT2z2OGj8uuwS4Tlwxcf7NGi_jjeLdASzDX1yNZQxUeWLYPKUSNs8fS5aDm-_x-Qnag3nKD-9kw8D1ZK_cwFF_UAfUq4nTZXxdRLZubzgtCPEMF534vSerO8KXaxknGb-oel9at1ud_r-KfSLQL8_fgs1_KifiF1Y0ptppY0FuoxKPUItNhjbq8bjr4vrN841KiAvJD8YyqO8YvR9m_zXGB9FLN5mGSV2oeqd2OqFinW_zjVJqs03OBe3yUuR1VuaK0jSv0ixLd5lIT7uToDqrE1NIIZXI16nYCZllqzVt1muRb3W5y8S2LCEV1GnTrtr2tYsdOjEhDFTkSgmVtLqkNoy3g5SW3nA0gpTxsvBF9PlWDk2AVLQmcPiIwoZbKkDKhwbbDYHHRjq215PxgVH7ZujI8k1nBSmRvJ-a_q8b_nQYLjswGXxb3F09hs9DuapcB_IYyc2vb713P6hikMcxpQDyOKb8TwAAAP__Xy0L1Q">