[libcxx-commits] [PATCH] D81954: Remove the try/catch codepath if `swap` is `noexcept`.

Marshall Clow via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jun 16 11:34:00 PDT 2020


mclow.lists added inline comments.


================
Comment at: libcxx/include/variant:1046
   inline _LIBCPP_INLINE_VISIBILITY
   void __swap(__impl& __that)  {
     if (this->valueless_by_exception() && __that.valueless_by_exception()) {
----------------
ldionne wrote:
> zoecarver wrote:
> > I think it would be good to also mark this `noexcept(__all<(is_nothrow_move_constructible_v<_Types> && is_nothrow_swappable_v<_Types>)...>::value)`.
> Yeah, I was going to suggest the same thing. If it makes sense. If not, why?
You pretty much have to do that, otherwise you get the try/catch/terminate block in the caller


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D81954/new/

https://reviews.llvm.org/D81954





More information about the libcxx-commits mailing list