http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49045
--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> 2011-05-18 18:03:17 UTC --- Hmm, that's tricky. G++ is saying that the two exception-specifications are different because the unqualified lookups for swap differ, because the latter one also finds the middle declaration. This seems like a core issue.