http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46821
Paolo Carlini <paolo.carlini at oracle dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jwakely.gcc at gmail dot | |com --- Comment #3 from Paolo Carlini <paolo.carlini at oracle dot com> 2010-12-06 13:56:35 UTC --- Yes, in the meanwhile figured out what you meant, sorry. This passes testing (modulo a trivial change to dg-error line numbers somewhere). Jon, what do you think? I think should be pretty safe... Index: tuple =================================================================== --- tuple (revision 167488) +++ tuple (working copy) @@ -78,7 +78,11 @@ const _Head& _M_head() const { return *this; } void - _M_swap_impl(_Head&) { /* no-op */ } + _M_swap_impl(_Head& __h) + { + using std::swap; + swap(__h, _M_head()); + } }; template<std::size_t _Idx, typename _Head> @@ -101,7 +105,7 @@ _M_swap_impl(_Head& __h) { using std::swap; - swap(__h, _M_head_impl); + swap(__h, _M_head()); } _Head _M_head_impl;