<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60704>60704</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang "error: requires clause differs in template redeclaration" on out-of-class definition of class template specialization member
</td>
</tr>
<tr>
<th>Labels</th>
<td>
duplicate,
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
stbergmann
</td>
</tr>
</table>
<pre>
At least with recent Clang 17 trunk:
```
$ cat test.cc
template<typename T> concept C1 = requires(T t) { --t; };
template<typename T> concept C2 = C1<T> && requires(T t) { *t; };
template<typename T> requires C1<T> struct S { void f(); };
template<typename T> requires C2<T> struct S<T> { void f(); };
template<typename T> requires C1<T> void S<T>::f() {}
template<typename T> requires C2<T> void S<T>::f() {}
```
```
$ clang++ -std=c++20 -fsyntax-only test.cc
test.cc:22:48: error: redefinition of 'f'
template<typename T> requires C1<T> void S<T>::f() {}
^
test.cc:21:48: note: previous definition is here
template<typename T> requires C1<T> void S<T>::f() {}
^
1 error generated.
```
(This causes issues with libstdc++, see <https://gcc.gnu.org/pipermail/libstdc++/2023-February/055442.html> "Re: <ranges> error: requires clause differs in template redeclaration".)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8lN-OqzYQxp9mcjMigjHhzwUXJDk8QLsvYMxA3Jo_tc226dNXhux2m_ZI2x71SJESE_k3H998M9I5PUzMFZzOcLoe5Opvs62cb9kOo5ymQzt396r2aFg6j79qf0PLiiePFyOnAZMcvV2nn0HUEF8hriGLH5_9SCkq6dGz80el9oeex8VIzyAu_r7wJEfGFxBfUM2T4sXjJUEQV7T8y6otO6DiBT1QiZCfMYo8iDNCfgVx_iyQNuAlAXHZ_gDKgLKvVACqP1_iDfEB7rxdlccfN9jrrDvsgQqg8j9A6Rn6_gbfzn4XvHHeyKGVon5QQ5lA_ddyP4l8jss_pCfkDOgMdMbI-Q7EVe1HijHq3X3y8rdonsz9OWT7QdREIOq0AFEjWzvb8MNyx72etNfzhHOPQHkPlP9v1iGcvvxNV_Kua5pDtRoXy696Xh1-UKcd3tjyd5CW7P7gwBNb6bk7fqUrxctNO1RydexQO7ey23eD0a3z3aM_QBd0zAjicvN-cUECNUDNoNRxmNbjbAegZtEL21FqA9Q83W8oJhE13NpV2jtQE59OaUrHmx_NPsX0w-YbUGbCyFo5DWGas2Eb4A_tfrijTBCNne57tg71hG-ObpFQRloZXAeiI1B56CrRlaKUB66SLM-oTNOiPNyqU94VqlAlc1aeRJa1-amUKpPJiVXRkzjoKmiPKRGJoISKY8ad4DzvOhWLtBQC0pjDWx-NeR2DFYfNyCqL8zg9GNmycdteJurWxWgVuk4EdAGix1BQWNq2CoSoXQcHaWy08-5PptfecLXvaiD6JkMwjMrqo7mPlJHuLyGde9yfvd92Cystjf59u44jjy3bw2pN9RQG7W9re1TzGPpvXt--osXOP7HyQM2eMKBm8-aPAAAA___IFAK9">