[Bug libstdc++/112942] [LWG2766] swap(variant&, variant&) is incorrectly marked as deleted
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Dec 10 12:36:33 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112942
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Summary|swap(variant&, variant&) is |[LWG2766] swap(variant&,
|incorrectly marked as |variant&) is incorrectly
|deleted |marked as deleted
Last reconfirmed| |2023-12-10
Status|UNCONFIRMED |SUSPENDED
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #1)
> https://wg21.cmeerw.net/lwg/issue2749
LWG 2749 added the current constraint to [variant.specalg]. The libstdc++
behaviour is because we implement the proposed resolution of LWG 2766:
https://cplusplus.github.io/LWG/issue2766
That issue points out that swapping variant<A> when is_swappable_v<A> is false
makes no sense. The author of A explicitly disabled swapping of A. Falling back
to the generic std::swap that uses moves seems wrong. If variant's own swap
overload is disabled, then swapping should be disabled.
But LWG 2766 seems to have languished for years. I'll poke LWG about it.
More information about the Gcc-bugs
mailing list