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

    <tr>
        <th>Summary</th>
        <td>
            [clang][concepts] Out-of-line defn of constrained member template of class template is incorrectly rejected
        </td>
    </tr>

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

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

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

<pre>
    Pretty sure the following should compile:

```c++
template <class... T>
concept A = true;

template <class F>
struct S {
  template <A<S<F>> T>
 void operator()(T);
};

template <class F>
template <A<S<F>> T>
inline void S<F>::operator()(T) {}
```

Result:

```
<source>:12:19: error: out-of-line definition of 'operator()' does not match any declaration in 'S<F>'
inline void S<F>::operator()(T) {}
                  ^~~~~~~~
1 error generated.
Compiler returned: 1
```

https://godbolt.org/z/3nnc7rEhb
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykU82O2ywUfZrrzVUsG-K_hReZJN5-nzrzAhjfxFQYIsAzShd99gp7mkln2qpVEQIMHM45mCO8V2dD1ELxAMUhEXMYrWvJKWkU9Zpc0tvh2v7vKIQr-tkRhpHwZLW2L8qc0Y921gNKO12UJuA7yA6QfW_LbK0S2EOsy2yg6aJFIAS-l1p4n6YpPgE_rsvSGkmXgDsEfsDgZgL-cH_qBzx2N7APbpYBHxGqVwzi_f4d8P0j8P2C4Mc7Wny2akB7ISeCdcBqYA2w-il2N_7q8Bda_oxXGa0MrexvO3bAdz_VshirDu_u917SJ_KzDr_6E6-ffO_t7CStZDmLTQN8h-ScdXFg57Cxp80ibqCTMiooa9CeEFj1XlqFgyWPxgacRJAjCnPFgaQWTiwwZSLs5o9V_24ePxQojl_Xsu7IVzd4JhMPoyFd5_frY3XoKMzO0BD95r-50jGEi4-6WAesO9uhtzqk1p2BdV-AddwYWbnj2CdDy4eGNyKhNi9rlrNtWRbJ2G4zauoiFzXPqjqvmCirU0a8kVm-PbFaJqplGePZlrEsK_KsSPucKKvqkpXNkJ9ECduMJqF0qvXzFLkT5f1MbclYkyda9KT9EmPGDL3gsgiMxVS7NmI2_Xz2sM208sG_nRJU0Ev-pRbmDMUhDtcIeigO-N-P72B5AdIaH5xQhgacaOrJvYUsLi9BuM0oj8pI6xzJoK_o6DPJQEMyO92-u1kVxrlPpZ2AdVHha7e5OBtBwLrFlwfWLb6_BQAA__8nOmTN">