<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/107215>107215</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Very weird concept checking inconsistency bug
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
strega-nil
</td>
</tr>
</table>
<pre>
Here's the [godbolt](https://gcc.godbolt.org/z/Mdfaj968f).
```cxx
#include <span>
#include <iterator>
struct Incomplete;
int main() {
using type1 = std::span<Incomplete>;
#ifdef WTF
using type2 = type1::iterator; // when you touch any of `span`'s members, it makes this work
#endif // WTF
using type3 = std::basic_const_iterator<
std::reverse_iterator<
__gnu_cxx::__normal_iterator<Incomplete*, std::span<Incomplete>>
>
>; // `type3` = `span<Incomplete>::const_reverse_iterator`; it's written this way in order to avoid instantiating `span<Incomplete>`'s members
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVE1vpDgQ_TXFxUrLmK_mwKE_gnYPe1vtHlvGFOAE7JZddKfn14_4SLonyWgQMsJVfvXeKwrpvW4NYgHJHpJjIEfqrCs8OWzlk9F9UNn6VvyFDkFknlGHDJJ9a-vK9gTJEcS2Izp7iHYgShBlq9RmDW-sa0GUP0CU_9SNfMnTbQMi3wA_At-ta8qXW729rTsi0kb1Y40MooM_SwPR83chTegkWXcPz6snNypifxtlh3OPhBDtl4g2xAapDYgtiJxBtu6z0WvTMrqdMWQQHZmnetIT7Zbqh0es5w-4iU1TY8P-_7dcgR6QxIw0Yy5Yd7p7tljFrh0adrMjIzuqjklzY7ZhkPK5bspnywccKnQexIHpif8rTm3Qnl2te_1ggqbWzTvut4SiX6VV0mt1UtZ4Ot2pHdZzH2kOL-g8fpMyX6dTa8bT1Ls5-3Qy1g2yf0x_ME_sJhV_cPf5jv_wshj_LhBSPkuClM-q3i37AjaVWTR-EZLyCVDTbPLVaSI0q7HyxrRh1tXoGFkmL1bXTBtP0pCWNDn6u4qfmra0Jzt--tiDuojqPMplgEWYiSSOkyjMg67IMMziJsMqz7NY5ZVI61pmqlKYJrXk20AXgouY5zwOuQiTfCPjMIm2WdNE2ziKEg4xx0HqftP3l2GawEB7P2IR8kyESdDLCns_j7sQBq9sjoIQ0_S7Yjr0VI2th5j32pO_w5CmHov_0N3YFbWrmbJG4ZmY6lC9Tp5oM1mtPaFRN1aNbTC6vvj0e9DUjdVG2QFEOWGvj6ezsy-oCEQ5M_IgypXypRA_AwAA__9hC2z9">