http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46821
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-12-06 14:04:58 UTC --- I think Marc's right, tuple::swap is specified to call swap for each element, and that is definitely something users can detect (even if there's rarely a good reason to do so for empty classes) Your change looks safe and correct to me