<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJzdVcFu4zYQ_Rr5QsSQKEsWDz44sdMGSDdBNrvNjaDIkc2GFgWSyjp_3yHtJN5m0aBd9FJBkEhq9Pg475HTWvW8uN9qTzzAzpNgSQtE98FZNUpQpH0mdTGrYSa7hqlWVYrVdC5nNZtB3oJgaibzTtbYmWb5KsuX19Y-6n5DRCBhC0RBp3sdtO0RlmTVOf_mxMB1ADfdZtUqo802hMFn5TKjl3hvdNiO7VTaHXaMeXp5nQ3O_gEyYLc1tsVXDqpjjFU51LScFRWTjM2LvCmbjhaqrClT86oWXQTQrdzvsaF7aUYF2OKJgwjWYeeUEy2v51VGWaIvZBiFIcJ7vel30AfiAwwEE7YZhVOYIbERuvc4DqY7jVt-WmEuYyZgD3IMGDr2ChzJ6pzzSGjAKT2XFv8WfeDwJMwoMA4DyBm5wvl1_5hYGBGQG_FbOxpFbG-eD9MfM9yOGxKckCnvRj9GBYnFb47sYNfiqxt7GTXwR5EOzyXp9B55PYHzUSCZ4A0KmFCiJIfoOj_cMqPn8U6jBC9-fXV-cXvLf71arfnl3c1vfHl-9Tp6cfPp8_364faOLy_v13f84uGhKE5-frNCRmtih6McZTRFSstfQzhHDdkbQjY_4RIv3RH8N0RDZ7RAJMK_fr5fxZWUS6GUA-8tGqI5Ip2C_RDwDRTxPpAtxryHfLk430Dgqj2EnWXl-s2BiDY8H4ln9OJj0uUPaCIcSSvm-ym238Vk89X3Aw7C6HBP0mWa9zT-NfZV-lPf3DgiDFLvRdBPgGZEbh53FrzbBIdTZSvczuAioi2TNlJ4SMtYnsL-b22GQXXE_RkL_Sf2-X6ajwz0r_3yOx7pdgzp5Dtqtlqff_mFX6-_rq_jnHFaGs-9eKDF1Zya6EUxktLd6N1gtNTBPMfUYn0Ro0m5uyDeJgCsFK2BHVEWPOltQAMOA0TvgYPpRC1KxUomJmJEXm4hexh3ou8nozOLf1yMtPcjYNovK8pyOtkuFAXW1GXb1U3VlJ3M2zqfqbKDmgGbz4uJES0Yv8BamFHawzeSILCN5XDy8wz0gua0KChtirqc02ba5M2siBQqxspazbNZDjuhzTTiTK3bTNwiQWId8fjRaB_828eDEgCJMDIMmPrUiU4-7tRqRZKbYT-49_p1WGFk2nLRki-uPYYkhbaxch3K4985ZJKWukjr_BOtzqMF>52902</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc++] constexpr copy assignment of vector::iterator assigns nothing under _LIBCPP_DEBUG_LEVEL == 2
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
cneumann
</td>
</tr>
</table>
<pre>
This seems to be introduced by 6146e4cf89dbd5d9627c4694e0bea9d4c0fc6e0b.
Looking at the definition in [_wrap_iter.h](https://github.com/llvm/llvm-project/blob/0edf99950e6234159c99710838f21d3629d756af/libcxx/include/__iterator/wrap_iter.h#L75) the actual assignment step is guarded against self assignment AND being executed under `__libcpp_is_constant_evaluated` - I think the latter should only guard the debug tracking like in other member functions.
A fixed version could look like:
```c++
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX11
__wrap_iter& operator=(const __wrap_iter& __x)
{
if (this != _VSTD::addressof(__x))
{
if (!__libcpp_is_constant_evaluated())
__get_db()->__iterator_copy(this, _VSTD::addressof(__x));
__i = __x.__i;
}
return *this;
}
```
Or alternatively (since self assignment seems harmless in this case):
```c++
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX11
__wrap_iter& operator=(const __wrap_iter& __x)
{
if (this != _VSTD::addressof(__x) && !__libcpp_is_constant_evaluated())
__get_db()->__iterator_copy(this, _VSTD::addressof(__x));
__i = __x.__i;
return *this;
}
```
Without `_LIBCPP_DEBUG_LEVEL == 2` the copy assignment operator is (implicitly) defaulted, so the problem does not happen there.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdVU1v4zYQ_TXyhYghUR-WDj7YsdMGcDdBNt3mRlDkyGZDiwJJZZ1_3yHtJN5m0aBd7KWCIJHS6M3jvKdha-Tz_H6nHHEAe0e8IS0Q1Xtr5ChAkvaZVFlRQSG6upGtLGVT0ZkoqqaAtAXeyEKknahwMk3SVZIuNsY8qn5LuCd-B0RCp3rllekRliTlkn21fGDKg53uknKV0Hrn_eCSfJHQKzy3yu_GdirMHidaP73cLgZr_gThcdpq0-ItBdk1TVOmUNG8yMpGNM0sS-u87mgm84o2clZWvAsAqhWHAw5UL_QoAUcscuDeWJycc6L5ZlYmtIn0ufAj14Q7p7b9HnpPnIeBYMG2I7cSK8S3XPUOn4PuzuMWn1ZYy1AJOIAYPYaOvQRLkiplLBAaMKVjwuDXvPcMnrgeOcZhALkg15hf9Y-RheYeuRG3M6OWxPT6-Zj-VOF23BJvuYh11-oxKEgMvrNkD_sWb93Yi6CBO4l0vC5Ipw7I6wmsCwKJCK9RwIgSJDlGV-nxFAldhjM-JXiwzfXy8vaW_Xq9WrOru5vf2GJ5_fr08ubT5_v1w-0dW1zdr-_Y5cNDlp19_GaFhFbEDCc58mCKWJa_hzCGGjZvCMnsjEs4VEfwWx8MndAMkQj78vl-FVaSL7iUFpwzaIj6hHQO9l3AN1DE-0C2EPMe8uVgbAueyfYYdpHk6zcHItrwfCKe0MuPSeffoYlwJK6YHaY4fheTzFbfPrDgR4v_JF3EvOfxr7Gv0p_75sYSrpF6z716AjQjcnP4Z8G7n-DYVXbc7jUuItgyaiO4g7iMxTns_9ZmGFQF3B-x0E-xz7dpPjLQf_bLH9jSzehj5ztptlovf_-FbdZf1puQM6Sloe-FhhZWc26iF8VILHet9oNWQnn9HEqL-wsfdazdJXEmAuBO0WrYE2nAkd54NOAwQPAeWJhO5DyXTd7wiUcQmOOeFDQ5ea5ckagLHAb7nkmHvVJE84TivtT_FBJz7UIPPjb6f1rrZLR6_q83PuXcCCjxVUmblE5287osKAeeNu0snXGK217TFaLNKDSibbN6onkL2oU1JpT28JVECBzjQidqTlOaZZTWWZXPaD2t07rI0kLmZdPklZwlRQp7rvQ08Jgau53YeaSEO47Dl1o5795eHssAsaQBn4-ou52LHsY97_tJzD2P3P8CoHCNzA">