<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/106272>106272</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc++] QoI: __wrap_iter prvalue can increment/decrement
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhihaoy
</td>
</tr>
</table>
<pre>
Came up in real life:
```cpp
bool foo(std::string const &s)
{
return std::all_of(s.begin(), --s.end(), [](unsigned char c) { return std::isdigit(c); });
}
```
Works on all major library implementations but WAT https://godbolt.org/z/8Mc1j9j4a
As soon as you try this on `std::array<char, 12>` it will fail in 2 implementations. I suggest to prevent this from compiling.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxkUk2PmzAQ_TXDZRRkhvB14JBsGmkPPVSqtMfIBgNOjY1sk1X211cmabfaShaMrXnz5r0Z7r0ajZQtFEcoTglfw2Rd-zGpidt7Imx_b1_4LHFdUBl0kmvUapCQH4CdgB2gZI_TLcvjRVircbAWqPahj4n5wQenzIidNT4gUOmBmie-Oj4CdDKszuBfDNf6YodYJRVyVAaojih6wd3Op9L0nw-P5oHq1Wxyeuwm7rADahCq43-lle_VqAJQHVMgPyJUp0f0p6vTF3mP65t1vzxag1xrnPnVOtRKOO7uqOZFy1mawIOyxqNYA74dfuIUwuIjLZ2BzqPthdUhtW4EOn8AnevvXXZtrnv-JNy-B4_eRhqPd7ticHcMk9qYoWSfFjnH75C_RLXRh4wg_wYlQxXwXWmNA1c6zo2-tpfiK_p1HKUPGCwuTt6kCQ-SwdkZOzsvSiszpknf5n2TNzyRbVbRvqqLhrFkajMhqqKWmcyFKIuMZWyQbMhkWfd9WQ1FolpitGc1VVmTZXuWZn0zyIFlxSCGKh8I9kzOXOlU69scPUmU96tsM1ZSRYnmQmq_rSaRVqIDOm6H4qq6NqJ2Yh097JlWPvjPOkEFvS31P7DihD_sK-QHvFzeHV8uKkiHi7txvUrsuEFlOreZBHTu5TNOVqfbL1NUYVpF2tkZ6Bw5n7_d4uxVdhG-CfFA56eWW0u_AwAA___M5g0O">