http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44629
--- Comment #13 from Jason Merrill <jason at gcc dot gnu.org> 2011-03-10 02:48:48 UTC --- (In reply to comment #12) > I'm confused why this would be an overload set. cmp1 is a template so I > can't see how this code would even begin to be valid without specifying > the template argument in the default argument... Once you know A's T, you have a desired type int (*)(T, T) from which to determine which specialization of the template to use.