http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60448
--- Comment #9 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Alisdair Meredith from comment #8) > I am still surprised that I get an error for calling the move > operations of 'local' though (in the second example) rather than getting an > ambiguous lookup. I think the first example is unambiguously a user-error > (mine) by this analysis. The example with swap(T&,T&) is ambiguous. In the example with swap(Swappable&,Swappable&), std::swap<local> is a better match (if it is not removed by enable_if as in libc++) as it binds local& directly instead of a reference to a base class.