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

    <tr>
        <th>Summary</th>
        <td>
            Error on out-of-line definition with constraints of template specialization
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          steve-downey
      </td>
    </tr>
</table>

<pre>
    Showed up during work on optional<T&> and making definitions out of line to produce the synopsis.

Reduced examplar:
```C++
#include <type_traits>

template <typename T>
struct X {};

template <class T>
struct X<T&> {
 template <typename U>
 requires(!(std::is_same_v<std::remove_cvref_t<U>, X>))
    X(U&& u);
};

template <typename T>
template <typename U>
 requires(!(std::is_same_v<std::remove_cvref_t<U>, X<T&>>))
X<T&>::X(U&& u) {}

```

https://compiler-explorer.com/z/v5Y14oTb8

The general converting constructor needs to be constrained out so as not to conflict with, or be a better match than, the copy constructor. 

<source>:16:8: error: out-of-line definition of 'X<type-parameter-0-0 &>' does not match any declaration in 'X<type-parameter-0-0 &>'
   16 | X<T&>::X(U&& u) {}
      |        ^
1 error generated.
Compiler returned: 1

I know there have been a number of  issues in this area, but kept finding ones that were fixed or seemed different. 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VU1v4zYQ_TX0ZWBDpizLOuiQeGOg1zYLpCeDIkcWG4lUyZEd768vRtI6TpB-nCoQCcDhPM6b94ZWMdqTQyxF9iiybws1UONDGQnPuDT-4vC6qLy5lr81_oIGhh7MEKw7wcWHV_AOfE_WO9WKdP8s5FakT6CcgU698imDtXWWT0TwA4GvobUOgTz0wZtBI1CDEK_O99HGlUi-ieRh-vsrctwAvqmub1UQ6RwQ22RaeyEfeU27MrVOt4NBEOmerj0eKShLUaRP97CEjEa3U051CM-3Q5HCoAleQOSPIv8m0se_S9ativGLzLtOMMYYgy9v_X7LhYB_DjZgFHIn5FrIXSTDhNMHG49RdXg8i3R_2wzY-TMe9TlgfSSR7kcouefbn4QseE3AAPAi5O47VyS3MHDkxukf-X3RnP-Rxc8efuLzIcIYn8n91O2O1M0v95sNUR8ZQh6EPGjf9bbFsMS3vvUBw0r7TsjDDyEP5-z39cY_V7v79OcG4YQOg2pBe3fGQOx37d1kAx_AIZrITq9w3lfWoRnnIHpQEZwnjmvv6tZqgoulhun7wDkKKiTCAJ0i3QA1ynGQ50X7_np_1wo-8E330Q9B49Sk9VakDzuRPgCG4HmMuISlr5fjKL6PKE-nkPnLLO6yV0F1SBiWyTKBuekyB-Nxqn0qTLkrGNStCmpEse6_oNzsud6CyD9J_q_Cwvhx3vyJbPbgemI5i0No5jdlPysMAWkIDtmCsL5v2y_w6vyF-xsQGnVGqBAdKHBDV2Hg7oCNccDIFKmxEVRAxZpUA8Er9gS1dYZ94B1GVozgwmi1fWPhA0TEDg0YW9cY0NEKFqZMTZEWaoHlOpfb3TYrtsWiKVWebGSmErWTVZ6rYlPUWV1LbTYmy7UqFraUidwkhUxkkhWyWEnMZJGskyTTVZHqndgk2Cnbrtr23K18OC3G8st1UmzybNGqCts4vvxSOrxM5ISU_EMQSk5aVsMpik3S2kjxHYYstVg-jX1m23ztJnbzu_EpcgNvD0jsUVvV2h-jZxZDaMuPE3my1AzVPIZ88_xv2Qf_B2oS8jCJIeRhJnQu5V8BAAD__24HE0E">