http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55778
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-12-21 21:05:36 UTC --- No. SFINAE only applies if there's a substitution error, which doesn't apply here. The foo(Args...) overload is viable and deduction succeeds unless the argument types are not copyable. To make the other overload viable it must be declared. Clang gives exactly the same result, this is not a compiler bug. If you think the language has a defect this is the wrong place to discuss it.