<div dir="auto">Ah, I was looking for a big "Resolved" status and missed that.<div dir="auto"><br></div><div dir="auto">So IIUC you're saying the conditional noexcept specifier is a relic required by the Lakos rule, but is always true thanks to LWG2016, and an allocator that throws in its swap in libc++ calls std::terminate, which is our resolution to UB, and so everything is already A-OK.</div><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, 4 Mar 2021, 09:16 Tim Song, <<a href="mailto:t.canens.cpp@gmail.com">t.canens.cpp@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, Mar 4, 2021 at 11:14 AM Christopher Di Bella <<a href="mailto:cjdb.ns@gmail.com" target="_blank" rel="noreferrer">cjdb.ns@gmail.com</a>> wrote:<br>
><br>
><br>
><br>
> On Thu, 4 Mar 2021, 09:03 Tim Song, <<a href="mailto:t.canens.cpp@gmail.com" target="_blank" rel="noreferrer">t.canens.cpp@gmail.com</a>> wrote:<br>
>><br>
>> I don't think this is an oversight. The conditional noexcept on swap<br>
>> in the standard is entirely due to the Lakos rule (swapping containers<br>
>> with non-propagating unequal allocators is undefined), so the<br>
>> unconditional noexcept is a permissible strengthening. The<br>
>> __is_nothrow_swappable check pre-17 is presumably to support<br>
>> allocators with throwing swaps, which were banned by LWG2016.<br>
>><br>
>> If a change is desirable, I would suggest treating LWG2016 as a DR and<br>
>> using unconditional noexcept across the board.<br>
><br>
><br>
> I see LWG2016 is P2 and hasn't been looked at since 2017. What would be necessary to get LWG to review this again?<br>
><br>
<br>
It's in C++17 already?<br>
</blockquote></div></div>